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。。。谢谢你的帮助:)