zoukankan      html  css  js  c++  java
  • 解决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);
                }
  • 相关阅读:
    课后作业07--二分法查找算法代码
    检索03 -- 二分法查找
    课堂随笔05--冒泡排序
    课后作业 06 -- 小数后几位精确判断并输出
    课后作业 05 -- 输出一段带字母与数字的随机数
    课后作业 04 --DateTime应用,判断多久后生日之类
    检索02--随机数种子的一些概念和理解
    课堂随笔04--关于string类的一些基本操作
    P1174 互素
    P1001 第K极值
  • 原文地址:https://www.cnblogs.com/yejiurui/p/2835003.html
Copyright © 2011-2022 走看看