带有复选框的 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 的项目。broadCastDetailsLists
和 sendEnquiry
现在的大小为 1。如果您取消选中同一个复选框,则会删除位置 1,因此 IndexOutOfBoundsException
.
我在列表视图的自定义数组适配器中放置了一个复选框。当我选中复选框时,适配器工作正常。但是当我尝试以随机方式取消选中该复选框时,应用程序会抛出。
这是我的代码供您参考:
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 的项目。broadCastDetailsLists
和 sendEnquiry
现在的大小为 1。如果您取消选中同一个复选框,则会删除位置 1,因此 IndexOutOfBoundsException
.