我有几个问题,我一直无法弄清楚。
我想从所有选中的元素的ListView
但是:
如果我检查,然后取消选择一个元素,它的返回为选中由 getCheckedItemPositions()
功能
我不知道我怎样才能通过这个循环:
SparseBooleanArray检查= list.getCheckedItemPositions();
解决方案
我解决了我的情况与此:
公共类MyAdapter扩展了BaseAdapter {
公众的HashMap<字符串,字符串>检查=新的HashMap<字符串,字符串>();
....
公共无效setCheckedItem(INT项){
如果(checked.containsKey(将String.valueOf(项目))){
checked.remove(将String.valueOf(项目));
}
其他 {
checked.put(将String.valueOf(项目),将String.valueOf(项目));
}
}
公众的HashMap<字符串,字符串> getCheckedItems(){
返回检查;
}
}
要设置一个元素被选中:
公共类FileBrowser扩展活动实现OnClickListener {
私人的ListView列表;
...
list.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司视图中查看,INT项目,
长ID){
BrowserAdapter BLA =(BrowserAdapter)parent.getAdapter();
bla.setCheckedItem(项目);
}
});
然后再从类的外部得到检查的项目。
MyAdapter bAdapter;
迭代器<字符串>它= bAdapter.getCheckedItems()值()迭代器()。
的for(int i = 0; I< bAdapter.getCheckedItems()的大小();我++){
//做什么
bAdapter.getItem(的Integer.parseInt(it.next());
}
希望它可以帮助别人。
I've a couple of question I haven't been able to figure out.
I'm trying to get all the checked elements from a ListView
but:
If I check and then uncheck an element, it's returned as "checked" by the getCheckedItemPositions()
function
I don't know how can I iterate through this:
SparseBooleanArray checked = list.getCheckedItemPositions();
解决方案
I solved my case with this:
public class MyAdapter extends BaseAdapter{
public HashMap<String,String> checked = new HashMap<String,String>();
....
public void setCheckedItem(int item) {
if (checked.containsKey(String.valueOf(item))){
checked.remove(String.valueOf(item));
}
else {
checked.put(String.valueOf(item), String.valueOf(item));
}
}
public HashMap<String, String> getCheckedItems(){
return checked;
}
}
To set an element is checked:
public class FileBrowser extends Activity implements OnClickListener{
private ListView list;
...
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int item,
long id) {
BrowserAdapter bla = (BrowserAdapter) parent.getAdapter();
bla.setCheckedItem(item);
}
});
Then to get the checked items from outside the class..
MyAdapter bAdapter;
Iterator<String> it = bAdapter.getCheckedItems().values().iterator();
for (int i=0;i<bAdapter.getCheckedItems().size();i++){
//Do whatever
bAdapter.getItem(Integer.parseInt(it.next());
}
Hope it can help someone.