带有复选框的 ListView 中的 IndexOutOfBoundsException

IndexOutOfBoundsException in a ListView with checkbox

我在列表视图的自定义数组适配器中放置了一个复选框。当我选中复选框时,适配器工作正常。但是当我尝试以随机方式取消选中该复选框时,应用程序会抛出。

这是我的代码供您参考:

holder1.chckbx1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if (isChecked) {
            Log.i("checked", "checked");
            positionArray.set(position, true);
            broadCastDetailsLists.add(new BroadCastDetailsList(cpsId2, cpsType2, position, cpsName,handShakeStatus, favouriteStatus));

            sendEnquiry.add(new Q2_SendEnquiryList(searchresultList.get(position).getCpsId(), searchresultList.get(position).getCpsName()));

        } else {
            Log.i("unchecked", "unchecked");
            positionArray.set(position, false);
            broadCastDetailsLists.remove(position);
            sendEnquiry.remove(position);
        }
    }
});

还有我的log供大家参考

确保您的 ArrayList 数据未找到或为空,首先打印列表数据并检查数据。

你的逻辑有问题。选中复选框时,您只会将数据添加到列表中,而取消选中时会删除索引。

假设您选中了位置 1 的项目。broadCastDetailsListssendEnquiry 现在的大小为 1。如果您取消选中同一个复选框,则会删除位置 1,因此 IndexOutOfBoundsException.