解决android中checkbox全部选择的操作

存在的问题:                                                                                                   

     我们在操作“全部选择”list中的元素,我们最常用的方法是,遍历一下,然后把所有的checkbox都给选中,但是这有一个bug,就是,当选择后,往下拉时候,下面的都没被选中,再往上拉的时候,上面的又会被取消选择。于是,找到一个新的解决办法,给记下来,留着以后使用。

image

解决办法                                                                                                           

      我们把选中的位置使用一个数组或者集合来记着当前选择的状态。

如果集合中包含这个item,那么我们就让他们的checkbox设置成选中状态。

       我们使用set集合来做,因为set集合可以去重复。

举个例子:

//一、创建一个set集合
private HashSet<String> itemSelected=new HashSet<String>();


//二、全部选择的点击事件
public void onClick(View v) {
        int id=v.getId();
        switch (id) {
        case R.id.bt_new_msg:
            Intent intent = new Intent(ConversationActivity.this, NewMessageActivity.class);
            startActivity(intent);
            break;
        case R.id.bt_all_selected:
            //把选中的状态加入到一个set集合
            for(int i=0;i<adapter.getCount();i++){
                Cursor cursor = (Cursor) adapter.getItem(i);
                String idstr = cursor.getString(ID_COLUMN_INDEX);
                itemSelected.add(idstr);
            }
            adapter.notifyDataSetChanged();
            break;
            
        case R.id.bt_cancel_selected:
            
            break;
        }
        
    }

三、在显示模式的时候去判断set集合中的元素,然后设置checkbox的选中状态
            //根据mode 模式设置checkbook
            if(mode==DISPLAYMODE.edit){
                
                checkBox.setVisibility(View.VISIBLE);
                
                //checkbox是否选中的
                if(itemSelected.contains(idstr)){
                    //选中
                    checkBox.setChecked(true);
                }else{
                    //不选中
                    checkBox.setChecked(false);
                }
                
            }else{
                checkBox.setVisibility(View.GONE);
            }
原文地址:https://www.cnblogs.com/yejiurui/p/2835003.html