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);
                }
  • 相关阅读:
    matlab colormap
    张量的基本概念
    河南省测绘资质单位大全
    Meanshift算法
    图形图像的绘制 GandyDraw
    leetcode
    Java 实现装饰(Decorator)模式
    Python
    Asp.Net+Easyui实现重大CRUD
    Scriptcase演示程序,现在,他们使用SC多么简单的开发系统
  • 原文地址:https://www.cnblogs.com/yejiurui/p/2835003.html
Copyright © 2011-2022 走看看