我正在使用带CheckBox的ListView,但正如你们大多数人所知,当你滚动滚动时,当你回滚滚动时,一个选中的CheckBox会被取消选中。所以我一直在阅读,我发现你可以将(使用getView)CB的id传递给getView的position参数以保存CheckBox状态!
但我不能将getView与SimpleCursorAdapter一起使用,可以吗?因为我正在使用bindView!
由于
答案 0 :(得分:1)
正在发生的事情是回收利用。屏幕上有7行,当您向下滚动时,顶部的一行将被回收用于底部的新行。你应该做的是保存复选框的状态。
这是解决类似问题的好方法:
https://github.com/commonsguy/cw-android/tree/master/FancyLists/RateList
答案 1 :(得分:0)
我设法在使用setViewBinder向上/向下滚动后恢复了复选框状态(在另一个答案中看到它):
mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if(columnIndex==4) {
cb=(CheckBox)view;
cb.setChecked(cursor.getInt(4)==0? false:true);
return true;
}
return false;
}
});
但仍有一些奇怪的事情发生,CheckBox在7或8个位置后被回收。如果我检查第一个CheckBox并且超过10个位置/行,那么第8个也被检查,当我检查最后一个时,同样发生,8个位置将会有一个选中的CheckBox。
有没有? Ideias?救命啊!