CheckBox在ListView中检查状态

时间:2010-04-10 07:09:24

标签: android listview checkbox

我正在使用带CheckBox的ListView,但正如你们大多数人所知,当你滚动滚动时,当你回滚滚动时,一个选中的CheckBox会被取消选中。所以我一直在阅读,我发现你可以将(使用getView)CB的id传递给getView的position参数以保存CheckBox状态!

但我不能将getView与SimpleCursorAdapter一起使用,可以吗?因为我正在使用bindView!

由于

2 个答案:

答案 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?救命啊!