在android中隐藏和显示复选框问题

时间:2016-07-04 06:09:58

标签: android android-fragments checkbox

我在Checkbox中有一个ListView来选择项目,我在Button之外有一个ListView。最初应隐藏Checkbox,当我点击ButtonCheckbox应显示ListView,反之亦然。

我有一个问题,当我按下Button时,它会显示一个Checkbox并再次按Button它会显示一些复选框,但我想要的是最初的当我按下Button ListView

时,我应该看不见它

注意:我的课程中有Button,适配器中有Checkbox

sdel.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

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

});    
public void toggleChecks() { 

   for (int i = 0;i<sms.size();i++) {
        holder.cb.setVisibility(CheckBox.VISIBLE);
   } 

   isCheckBoxVisible=!isCheckBoxVisible;
   notifyDataSetChanged();
}

1 个答案:

答案 0 :(得分:4)

为此目的创建模型 在那里为布尔变量定义getter setter

private  boolean isVisible;

public boolean isVisible() {
    return isVisible;
}

public void setVisible(boolean visible) {
    isVisible = visible;
}

在activty中默认将此标志设置为false

YourModel model=new YouModel();
 for (int i = 0; i <sms ; i++) {

        model.setVisible(false);
    }

在适配器写入条件中复选框 //假设sms是arraylist

YourModel model=sms.get(position)
if(model.isVisible){
checkbox.setVisibility(View.VISIBLE);
}else{
checkbox.setVisibility(View.INVISIBLE);
}

现在点击按钮点击下面的代码 //如果复选框可见

  for (int i = 0; i <sms.size() ; i++) {
            sms.get(i).setVisible(false);
        }
adapter.notifyDataSetChanged();

//if checkbox is invisible
  for (int i = 0; i <sms.size() ; i++) {
            sms.get(i).setVisible(true);
        }
adapter.notifyDataSetChanged();