【问题标题】:checkbox select all delete issue复选框选择所有删除问题
【发布时间】:2016-11-02 10:09:05
【问题描述】:

我在自定义列表视图中有复选框,我有两个单独的按钮,一个用于全选,另一个用于删除,但如果我选择一个复选框并选择删除它,我会遇到很大的问题。但如果我选择全部并删除它删除列表中的一些数据,例如,一旦我全选并删除它,我在列表视图中有 50 条短信删除一些短信,然后我再次按删除它删除另外一些这样的..建议一些解决方案

     sel.setOnClickListener(new View.OnClickListener() {
        @Override

     public void onClick(View v) {

     for (int i = 0; i <sms.size() ; i++) {

       if(sms.get(i).getChecked() == false ) {
                    sms.get(i).setChecked(true);
                }else if(sms.get(i).getChecked()==true) {
                    sms.get(i).setChecked(false);
                }


            }
            ((datalist)mlistView.getAdapter()).notifyDataSetChanged();
        }
    });
             del.setOnClickListener(new View.OnClickListener() {
        @Override

      public void onClick(View v) {


            for(int i=0; i<sms.size(); i++){
                if(sms.get(i).getChecked() == true){
                    sms.remove(i);
                }
            }


            ((datalist)mlistView.getAdapter()).notifyDataSetChanged();

        }

【问题讨论】:

  • 您的问题缺少一些昏迷和点。请编辑您的问题以匹配一些语法规则。

标签: android android-fragments checkbox baseadapter


【解决方案1】:

我认为问题出在 for 循环上面。在 else if 语句中,您取消选中复选框。试试下面的代码,

sel.setOnClickListener(new View.OnClickListener() {

     @Override
     public void onClick(View v) {

     for (int i = 0; i <sms.size() ; i++) {

       if(sms.get(i).getChecked() == false ) {
                    sms.get(i).setChecked(true);
                }else if(sms.get(i).getChecked()==true) {
                    sms.get(i).setChecked(true);
                }


            }
            ((datalist)mlistView.getAdapter()).notifyDataSetChanged();
        }
    });

【讨论】:

    【解决方案2】:

    我猜当您在 for 循环中从 ArrayList 中删除项目时会出现问题。结果,它的尺寸变小了,这可能会导致不良的副作用。

    尝试像这样以相反的顺序迭代你的 sms ArrayList:

    for (int i = sms.size()-1; i >= 0; i--) {
    
           if(sms.get(i).getChecked() == true){
                    sms.remove(i);
           }
     }
    

    这种方式减少 sms ArrayList 的大小不会影响循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多