【发布时间】:2011-04-01 07:12:54
【问题描述】:
我的布局中有一个 simple_list_item_multiple_choice 列表视图,我正在尝试从中删除所有选定的项目。我知道如何删除它,但我在删除项目时遇到了两个主要问题:-
我的程序不会删除超过 2 个项目,例如如果我选择了 4 个项目,那么只会删除 2 个项目,有时甚至会删除错误的项目。
当我调试我的代码时,我在我的代码中发现了 Array IndexOutOfBoundException,据我所知,我的代码中没有这样的异常,这都是因为删除错误或更少项目。
这是我的代码:-
public void onClick(View view)
{
SparseBooleanArray checkedPositions = new SparseBooleanArray();
checkedPositions.clear();
checkedPositions = lv.getCheckedItemPositions();
int size = checkedPositions.size();
if(size != 0)
{
try
{
for(int i = 0; i < size; i++)
{
if(checkedPositions.valueAt(i))
{
list.remove(checkedPositions.keyAt(i));
notes.notifyDataSetChanged();
lv.setItemChecked(i,false);
}
}}catch (IndexOutOfBoundsException ie)
{}
}
else{}
}
我仅出于调试目的才捕获该异常。在此先感谢,但请帮忙,因为从过去两天开始我就一直卡在这部分。
【问题讨论】:
-
应该是 i
-
@m0s 我也试过了,我什至试过 i = 1, size + 1, size -1 或者可以对循环进行所有可能的更改。还是行不通。异常仍然存在。 :(
-
您应该检查导致异常的原因,list.remove(...) 或 checkedPositions.valueAt(...)。而且它不是很清楚什么是列表以及它是如何初始化的
-
m0s 我已经发布了更多代码,如果您发现错误并且我刚刚发现了一些东西,请看一下,也许它可以帮助您找到错误; keyAt() :- 给定 0...size()-1 范围内的索引,返回此 SparseBooleanArray 存储的第索引键值映射中的键。可能是因为这个 size()-1 我遇到了这个问题。你怎么看?
标签: android listview selected items