我在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供您参考
答案 0 :(得分:3)
这是你的逻辑问题。选中复选框时,您只需将数据添加到列表中,同时在取消选中时删除索引。
假设您检查位置1处的项目。broadCastDetailsLists
和sendEnquiry
现在的大小为1.如果取消选中相同的复选框,则删除位置1,即IndexOutOfBoundsException
。
答案 1 :(得分:0)
确保未找到ArrayList数据或为null,首先打印列表数据并检查数据。