正确的方法来检查ListView中所有复选框?方法来、复选框、正确、ListView

2023-09-04 09:06:22 作者:゛簡簡憚憚

我有一组CHOICE_MODE_MULTIPLE一个L​​istView。我也有附加的头管理 (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(我,真正的);
    }
}
 
在vb中如何在点击checkbox时让listview中的checkboxes全部有对勾,求高手指点

 布尔检查= 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);