首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ListView中选中所有复选框的正确方法是什么?

在ListView中选中所有复选框的正确方法是什么?
EN

Stack Overflow用户
提问于 2011-02-02 23:11:48
回答 4查看 16.1K关注 0票数 9

我有一台设置为CHOICE_MODE_MULTIPLE的ListView。我也有额外的标题来管理(取消)选择所有的项目。问题是:这样做是正确的吗?它是有效的,但是我不确定这是不是正确的方式。正如您在下面看到的,有一个checkAllCheckBoxes对象,我将其传递给头onClickListener()方法。你认为如何?如有任何回复,我将不胜感激。

代码语言:javascript
运行
复制
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);
            }
        }
    }

};
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-02 23:18:04

你可以像这样优化你的代码:

替换

代码语言:javascript
运行
复制
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);
    }
}

通过

代码语言:javascript
运行
复制
    boolean check = lv.isItemChecked(0);
    for(int i = 0; i <= size; i++)
        lv.setItemChecked(i, !check);
票数 9
EN

Stack Overflow用户

发布于 2011-02-02 23:18:36

这应该做同样的事情,并且更简洁一些。循环从1开始,因为您不想重置header的选中状态,并且header的索引为0。

代码语言:javascript
运行
复制
private OnClickListener checkAllCheckboxes = new OnClickListener(){
    public void onClick(View v) {
        ListView lv = getListView();
        int size = lv.getAdapter().getCount();
        boolean checked = lv.isItemChecked(0);
        for(int i=1; i<size; i++) {
          lv.setItemChecked(i, checked);
        }
    }

};
票数 2
EN

Stack Overflow用户

发布于 2014-05-31 13:32:09

其中Length是数组中的数组长度,chkbox是全选复选框。

新建(chkbox.setOnCheckedChangeListener OnCheckedChangeListener() {

代码语言:javascript
运行
复制
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
            if(chkbox.isChecked())
            {

                for(i=0;i<length;i++)
                {

                                    lv.setItemChecked(i, true);
                }

            }
            else
            {
                for(i=0;i<length;i++)
                {

                                    lv.setItemChecked(i, false);
                }


            }

        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4876083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档