如何从一个ListView的所有检查项目?项目、ListView

2023-09-12 01:58:50 作者:帅得惊动党中央

我有几个问题,我一直无法弄清楚。

我想从所有选中的元素的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(){
        返回检查;
    }
}
 
安卓中如何设置listview 最后一个item距顶部高度,就是最后一个间距和其他不一样

要设置一个元素被选中:

 公共类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.