更新 getCheckedItemPositions() 方法

毕设导航 论文问答 1

我使用 listview 中的 checkboxes,然后设置成 multi_choice。 如果我执行一次 getCheckeItemPositions 来获的选中的 listview 选项,程序可以很好的运行。 但是如果我再执行一次,取消其中的一些选项,系统依然认为还是选择了的。我只能添加更多的 items 来"checked",如何解决这个问题?

sp = new SparseBooleanArray();
        lTransfer = new ArrayList<String>();
        ListView info = (ListView)findViewById(R.id.info);
        sp = info.getCheckedItemPositions();  
        Log.d("Watcher","Arraysize:" + sp.size());
        for(int i = 0; i< sp.size();i++){
            Log.d("Watcher","Arrayfound:" + info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
            lTransfer.add(info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
        }

public void updateInfo(){
    ListView info = (ListView)findViewById(R.id.info);
    info.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    info.setItemsCanFocus(false);
    info.setOnItemClickListener(new InfoListener());
    lSpin = new ArrayAdapter<String>(this, R.layout.list_item, lToAdd);       
    info.setAdapter(lSpin);   
}

回复

共2条回复 我来回复
  • 代码海岸
    这个人很懒,什么都没有留下~
    评论
    List<String> checklist = new ArrayList<String>();
        int id = item.getItemId();
        if (id == R.id.deleteId) {
            // 获得选中的item对象
            // 此对象中存储的是你选择过的item对象postion/checnked的值
            SparseBooleanArray sp = lsv.getCheckedItemPositions();
            // Log.i("TAG", "size:" + sp.size());
            for (int i = 0; i < sp.size(); i++) {
                int key = sp.keyAt(i);
                boolean value = sp.valueAt(i);
                Log.i("tag", key + "/" + value);
                if (value) {
                    checklist.add(list.get(key));
                }
            }
            // 从list集合中删除选中的item对象
            list.removeAll(checklist);
            // 清除checkedtextview
            lsv.clearChoices();
            // 更新listveiw中数据的显示
            adapter.notifyDataSetChanged();
    
    0条评论
  • 毕业设计驿站
    这个人很懒,什么都没有留下~
    评论
    List<String> checklist = new ArrayList<String>();
        int id = item.getItemId();
        if (id == R.id.deleteId) {
            // 获得选中的item对象
            // 此对象中存储的是你选择过的item对象postion/checnked的值
            SparseBooleanArray sp = lsv.getCheckedItemPositions();
            // Log.i("TAG", "size:" + sp.size());
            for (int i = 0; i < sp.size(); i++) {
                int key = sp.keyAt(i);
                boolean value = sp.valueAt(i);
                Log.i("tag", key + "/" + value);
                if (value) {
                    checklist.add(list.get(key));
                }
            }
            // 从list集合中删除选中的item对象
            list.removeAll(checklist);
            // 清除checkedtextview
            lsv.clearChoices();
            // 更新listveiw中数据的显示
            adapter.notifyDataSetChanged();
    
    0条评论

发表回复

登录后才能评论