Android 检查后出现ListView复选框问题
我的问题是,当我选中Android 检查后出现ListView复选框问题,android,listview,checkbox,Android,Listview,Checkbox,我的问题是,当我选中复选框时,它会变为选中,但它会复制下一个列表视图项目的选中状态,该项目不在可见列表中(例如,当我在一个屏幕上看到位置0-5/6上的项目时,它是位置7-8上的元素) 这是我的onClick方法: viewHolder.messageSelectBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
复选框时,它会变为选中,但它会复制下一个列表视图
项目的选中状态,该项目不在可见列表中(例如,当我在一个屏幕上看到位置0-5/6上的项目时,它是位置7-8上的元素)
这是我的onClick方法:
viewHolder.messageSelectBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewHolder.messageSelectBox.isChecked()) {
Log.i("itemID", String.valueOf(getItemId(position)));
Log.i("position", String.valueOf(position));
mListOfItemsToDelete.add(position);
Collections.sort(mListOfItemsToDelete);
Collections.reverse(mListOfItemsToDelete);
} else {
for (int i = 0; i < mListOfItemsToDelete.size(); i++) {
int pos = mListOfItemsToDelete.get(i);
if (pos == position) {
mListOfItemsToDelete.remove(i);
}
}
}
}
});
伙计们,你们知道怎么回事了吗?在getView()
中,在setOnClickListener
之前,必须按如下方式加载选中状态
viewHolder.messageSelectBox.setChecked(mListOfItemsToDelete.contains(position))
因此,选中状态将保持在mListOfItemsToDelete
中,使用该状态,您将加载复选框的选中状态。在getView()
中,您必须在setOnClickListener
之前加载选中状态
viewHolder.messageSelectBox.setChecked(mListOfItemsToDelete.contains(position))
因此,选中状态将保留在mListOfItemsToDelete
中,并使用该状态加载复选框的选中状态。这是列表视图中非常常见的问题。出现此问题是因为在滚动列表视图时重复使用列表项。所以你需要处理每一次
为此,在模型类中需要一个布尔值。并在选中或未选中复选框时将布尔值设置为true/false 这是列表视图中非常常见的问题。出现此问题是因为在滚动列表视图时重复使用列表项。所以你需要处理每一次
为此,在模型类中需要一个布尔值。并在选中或未选中复选框时将布尔值设置为true/false 很好用!我已经开始从教程中创建一个新的ListView。。。谢谢你的帮助:)工作得很好!我已经开始从教程中创建一个新的ListView。。。谢谢你的帮助:)