2011-09-23 25 views
0

我使用的是ListView其中有:ViewBinder setViewValue的ListView项导致多个复选框选中

  1. 列表项单击
  2. CheckBox点击

我可以保存cursorPosition使用view.setTag(cursor.getPosition())我可以对检查的项目采取必要的措施,但是当我向下滚动时,我看到其他几个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);

+0

您是否使用ViewHolder模式?有些代码会帮助:) – Noel

+0

添加了代码。这个Viewbinder按照描述使用。 – Taranfx

回答

0

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

API Demo example

+0

这只适用于CheckedTextView,我没有使用它。我正在使用我的自定义toggleButton。对于CheckedTextView,View非常复杂 – Taranfx