带有复选框的ListView中的IndexOutOfBoundsException

时间:2015-10-05 07:21:02

标签: android listview exception checkbox android-arrayadapter

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

以下是我的代码供您参考:

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供您参考

2 个答案:

答案 0 :(得分:3)

这是你的逻辑问题。选中复选框时,您只需将数据添加到列表中,同时在取消选中时删除索引。

假设您检查位置1处的项目。broadCastDetailsListssendEnquiry现在的大小为1.如果取消选中相同的复选框,则删除位置1,即IndexOutOfBoundsException

答案 1 :(得分:0)

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