2011-09-23 55 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