ListView项的ViewBinder setViewValue导致检查多个CheckBox

时间:2011-09-23 20:40:14

标签: android checkbox android-listview android-viewbinder

我正在使用ListView,其中包含:

  1. 列表项单击
  2. CheckBox点击
  3. 我可以使用view.setTag(cursor.getPosition())保存cursorPosition,我可以对选中的项目采取必要的操作,但是当我向下滚动时,我会看到其他几个CheckBoxes已选中(仅限视觉)。 作为解决方法,我尝试设置视图说明,在列表中保存CheckedBox视图ID,然后迭代以查看是否需要将CheckBox显示为已选中。但是当我向下滚动(相同的视图ID)时,视图似乎被重用。

    如何才能显示实际检查的CheckBoxes?代码:

    public class MyViewBinder implements ViewBinder {
     public boolean setViewValue(View view, final Cursor cursor, int columnIndex) {
            int viewId = view.getId();
            switch (viewId) {
                case R.id.checkbox:
                view.setTag(cursor.getPosition());
                return true;
    
                case R.id.....
                .......
            }
    

    用作:

      

    mySimpleCursorAdapter.setViewBinder(myViewBinder);

1 个答案:

答案 0 :(得分:0)

我对ViewBinder界面没有太多经验,但您是否考虑在列表视图(API reference)上使用setChoiceMode()?您可以将其设置为CHOICE_MODE_MULTIPLE,以便android为您添加复选框。您不必担心以这种方式维护已检查的项目。

API Demo example