ListView中的复选框 - 当我选择第一个复选框时,它会检查最后一个,反之亦然

jon*_*aff 7 android android-listview

我已经设置了一个ListView,每行包含一个Checkbox(以及TextView).出于某种原因,当我"检查"其中一个方框时,它似乎"检查"ListView中相反的方框(即选择顶部框时,底部复选框将被选中而顶部仍未选中).

我知道这里没有任何代码可以使用,但我只是想知道这是否是一般问题?如果没有,我可以尝试发布一些代码.谢谢!

Lux*_*ode 4

视图在 ListView 中被回收。这就是为什么有些在你认为不应该的时候却被检查的原因。

事情是这样的:复选框不知道代表适配器中的哪个项目。它只是 ListView 中一行中的一个复选框。您需要做一些事情来“教导”行当前正在显示数据集中的哪个项目。因此,不要使用字符串数组这样简单的东西作为适配器的数据,而是创建一个新的模型对象来存储复选框的状态。然后,在返回 中的行之前getView(),您可以执行以下操作:

//somewhere in your class
private RowData getData(int position) {
return(((MyAdapter)getListAdapter()).getItem(position)); 
}



 //..then in your adapter in getView()

    RowData object = getModel(position);

     if(object.isChecked()) {
       myCheckbox.setChecked(true);
     } else {
       myCheckbox.setChecked(false);
      }

     //then retun your view.
Run Code Online (Sandbox Code Playgroud)