我在Checkbox
中有一个ListView
来选择项目,我在Button
之外有一个ListView
。最初应隐藏Checkbox
,当我点击Button
时Checkbox
应显示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();
}
答案 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();