我有一组CHOICE_MODE_MULTIPLE一个ListView。我也有附加的头管理 (UN)选择的所有项目。现在的问题是:是不是做了正确的方法是什么?那么它的工作原理,但我不知道这就是正确的方法。当你看到下面有一个checkAllCheckBoxes 我传递对象头onClickListener()方法。你怎么看?将不胜感激任何响应。
私人OnClickListener checkAllCheckboxes =新OnClickListener(){
公共无效的onClick(视图v){
ListView的LV = getListView();
INT大小= getListAdapter()getCount将()。
如果(lv.isItemChecked(0)){
的for(int i = 0; I< =大小;我++){
lv.setItemChecked(我,FALSE);
}
} 其他 {
的for(int i = 0; I< =大小;我++){
lv.setItemChecked(我,真正的);
}
}
}
};
解决方案
您可以优化您的code是这样的:
替换
如果(lv.isItemChecked(0)){
的for(int i = 0; I< =大小;我++){
lv.setItemChecked(我,FALSE);
}
} 其他 {
的for(int i = 0; I< =大小;我++){
lv.setItemChecked(我,真正的);
}
}
按
布尔检查= lv.isItemChecked(0);
的for(int i = 0; I< =大小;我++)
lv.setItemChecked(一,检查!);
I have a ListView with set CHOICE_MODE_MULTIPLE. I also have additional header to manage (un)selecting all the items. The question is : is it correct way to do that? Well it works, however I'm not sure thats proper way. As you see below there is an checkAllCheckBoxes object which I pass to header onClickListener() method. What do you think? Would be grateful for any responses.
private OnClickListener checkAllCheckboxes = new OnClickListener(){
public void onClick(View v) {
ListView lv = getListView();
int size = getListAdapter().getCount();
if(lv.isItemChecked(0)){
for(int i = 0; i<=size; i++){
lv.setItemChecked(i, false);
}
} else {
for(int i = 0; i<=size; i++){
lv.setItemChecked(i, true);
}
}
}
};
解决方案
You can optimize your code like this :
Replace
if(lv.isItemChecked(0)){
for(int i = 0; i<=size; i++){
lv.setItemChecked(i, false);
}
} else {
for(int i = 0; i<=size; i++){
lv.setItemChecked(i, true);
}
}
by
boolean check = lv.isItemChecked(0);
for(int i = 0; i <= size; i++)
lv.setItemChecked(i, !check);