单击菜单项时选择“复选框”

时间:2015-12-07 13:05:42

标签: android android-activity

当我按"选择所有"我想检查所有包含每个listview项目的复选框,这是我的布局::

enter image description here

enter code here
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    // Handle item selection
    switch (item.getItemId())
    {

        case R.id.mark_all:
        {
            CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
            checkBox.setChecked(true);
            return true;
        }
        default:
            return super.onOptionsItemSelected(item);
    }
}

此代码仅选择一个具有第一个listview项目的复选框。谢谢

3 个答案:

答案 0 :(得分:0)

使用for循环获取所有复选框

这里有一个例子:

boolean check = lv.isItemChecked(0);
for(int i = 0; i <= size; i++)
    lv.setItemChecked(i, !check);

答案 1 :(得分:0)

使用for循环并获取包含复选框的视图:

for(int i = 0; i < listview.getChildCount(); i++)
{
   View v = listview.getChildAt(i);    

   CheckBox ch = v.findViewById(R.id.checkbox);
   ch.setSelected(true);
}

答案 2 :(得分:0)

首先在你的类中添加SparseBooleanArray

SparseBooleanArray mChecked = new SparseBooleanArray();

现在添加此功能以检查:
如果检查结果为真:检查所有项目
size = no of list vew item

public void setAllChecked(boolean check) {
    int size = getCount();
    if (check) {
        for (int i = 0; i < size; i++) {
            mChecked.put(i, true);
            notifyDataSetChanged();
        }

    } else {

        for (int i = 0; i < size; i++) {
            mChecked.put(i, false);
            notifyDataSetChanged();
        }

    }

现在在返回视图之前选中复选框状态

CheckbixID.setChecked((mChecked.get(position) == true ? true : false));