2011-12-31 13 views
0

基本的に、実際には表示されないリストビューの子供の一部が選択された場所にバグがあります。たとえば、ActionModeと入力して最初の子のみを選択すると、他の複数の子どもが選択したように表示されますが、実際には選択されません。なぜこうなった?ListView - CHOICE_MODE_MULTIPLE_MODAL - ランダムなアイテムが選択されています

public void onItemCheckedStateChanged(ActionMode mode, int position, 
      long id, boolean checked) { 
     final int checkedCount = lv.getCheckedItemCount(); 
     mSelectedConvCount.setText(Integer.toString(checkedCount)); 
     if (checked) { 
      lv.getChildAt(position).setBackgroundColor(
        Color.BLUE); 
     } else { 
      lv.getChildAt(position).setBackgroundColor(
        Color.TRANSPARENT); 
     } 
    } 
} 
+0

おそらく、子ビューを取得するためにパラメータとしてpositionを指定したgetChildAtメソッドを使用することはできません。子供の世話は異なっている。 –

+0

@ user674199私はすでにこれをやっているように私に見えます。 – adneal

答えて

1

を忘れないでください:ListViewでは、何でもあなたが設定または任意の子ビューの変化は、彼らが表示されるたびに設定する必要があります。提供されたコードで行っていることは、最初に設定することです。つまり、アダプターもsetBackgroundColorにする必要があります。 bindView()にあります。それ以外の場合は、ビューがリサイクルされると、以前の背景色が保持され、そうでないときに選択されたように見えます。

関連する問題