在android中选择Listview的所有复选框

时间:2017-05-27 09:45:01

标签: android

我正在使用自定义对话框,其中我已经显示 listView 并带有复选框。我想选择ListView的所有复选框单击对话框中的按钮。

这是我的按钮onClickListener

selectAll.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                for (int i = 0; i < listView.getChildCount(); i++) {
          LinearLayout myLayout =(LinearLayout)listView.getChildAt(i);
          CheckBox cb = (CheckBox) myLayout.findViewById(R.id.checkbox);
          cb.setChecked(true);
               }
            }
        });

使用上面的代码,我只能查看那些正在查看的复选框。 我知道这是因为listView重用了视图。 请建议我做什么

1 个答案:

答案 0 :(得分:0)

您可以将boolean变量添加到模型类中,并在按钮单击侦听器上设置为true,请检查:

         class YourModel{
            public boolean isSelected() {
                return isSelected;
            }

            public void setSelected(boolean selected) {
                isSelected = selected;
            }
          }

您的按钮onClick更改。

              public void onClick(View view) {
                    for (int i = 0; i < yourArrayList.size(); i++) {
                        yourArrayList.get(i).setSelected(true);
                    }
                    yourAdapter.notifyDataSetChanged();
                }

你的适配器getView方法

          public View getView ( final int position, View convertView, ViewGroup parent){
             CheckBox cb = (CheckBox) myLayout.findViewById(R.id.checkbox);
            cb.setChecked(yourModel.isSelected());
          }