2011-12-31 82 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

也許你不能只使用getChildAt方法和position作爲參數來獲取子視圖。孩子的位置是不同的。 – 2011-12-31 11:24:57

+0

@ user674199在我看來,我已經這樣做了。 – adneal 2012-01-05 11:50:33

回答

1

記住:在ListView,您所有的設定或以任何孩子觀念的轉變,必須每次都顯示的時間設定;您提供的代碼中所做的所有工作都是在初始階段進行的。這意味着您的適配器也必須適當地使用setBackgroundColor,例如。在bindView()。否則,當視圖被回收時,它將保留先前的背景顏色,並在不存在時顯示選擇。