2011-12-07 14 views
0

良い日は少し問題があり、しばらくここにこだわっています。私はカスタムリストビュー(今のところ、チェック項目の数だけ)からすべてのチェック項目を取得しようとしていると何も動作するようです。このコードは0を返し、私はもう何を試していいのかわかりません。カスタムリストビュー(カーソルアダプタ)のチェック項目のすべての値を取得

SparseBooleanArray checked = list.getCheckedItemPositions(); 

私は正常にこのコードでリストビュー内のすべての要素をチェックし、オフにすることができました:

for(int i=0; i < list.getChildCount(); i++){ 
    LinearLayout itemLayout= (LinearLayout)list.getChildAt(i); 
    CheckBox checkbox = (CheckBox)itemLayout.findViewById(R.id.media_checkbox_id); 
     checkbox.setChecked(true);   
} 

しかし、私は全くチェックされた項目の数を取得するように見えることはできません! !..どんな助けでも大歓迎です。ありがとうございました。

答えて

0

あなたの問題はListItemレイアウトにある可能性があると思います。

ListViewのgetCheckedItemPositions()およびその他の同様の機能の機能を修正するには、Checkableを実装する必要があります。

thisを読んでください。

アップデート:ここで

ListView.javaソースコードからコードスニペット:

if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) { 
     if (child instanceof Checkable) { 
      ((Checkable) child).setChecked(mCheckStates.get(position)); 
     } 
    } 

リストビューは、あなたの行内部の任意のチェックボックスの状態を知っている(またはケア)しません。単に「あなたはチェックされましたか?」という行を尋ねるだけです。または行に "あなた自身をチェックしてください!"と伝えます。

ListViewのすべての機能をチェックすることは、あなたの行(AKAの子)が「チェック可能」なビュータイプのインスタンスであることを前提としています。

チェック可能なビューは、行がチェックされているかどうかをlistviewに伝えます。また、状態の変更をチェックしたときの処理(たとえば、行にチェックボックスの状態を設定するなど)を制御できます。

+0

私はcheckedtextViewを使用していないので、それほど違いはありません。ただ疑問に思う?... – irobotxxx

関連する問題