扫描列表视图中的复选框的方法

时间:2014-01-11 00:32:51

标签: java android listview checkbox android-checkbox

我正在尝试这个示例项目:http://schimpf.es/listview-with-checkboxes-inside/

我在包含ListView的xml文件中添加了一个按钮。 当它被按下时,我想要一个方法,扫描复选框数组并检查是否所有复选框都被检查。

有人能帮助我吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

private boolean checkBoxes(){
  for(SampleData s : dataList) if (s.selected == false) return false;
  return true;
}

答案 1 :(得分:0)

遍历dataList中的每个条目。如果你得到一个未设置的,则返回false。如果他们都通过测试返回true:

private boolean allChecked()
{
    for(Object item : dataList)
    {
        if (!(SampleData)item.isSelected())
            return false;
    }
    return true;
}

请注意,dataList被定义为Object类型的ArrayList,而不是SampleData类型。因此,当您迭代每个条目时,需要将其强制转换为SampleData。

编辑:

要使用它,请更改Activity类,以便'adapter'是类变量:

public class CheckboxListActivity extends ListActivity {

    //Define adapter here so that you can refer to it anywhere within the Activity
    CheckboxListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_checkbox);

        //Set the class level 'adapter' variable
        adapter = new CheckboxListAdapter(getLayoutInflater());
        getListView().setAdapter(adapter);
    }
}

在onClick中,在变量“adapter”上调用新方法:

public void onClickNeste_sjekkliste (View v) {
    boolean ifCheckedAll = adapter.allChecked();

    if (ifCheckedAll == false) {
        Log.d("CheckedAll", "false");
    }
    else if (ifCheckedAll == true) {
        Log.d("CheckedAll", "true");
    }   
}

答案 2 :(得分:0)

我无法让它发挥作用。 它总是返回false。

我把方法放入CheckBoxListAdapter.java

public boolean allChecked() {
    for (Object item : dataList) {
        if (!((SampleData) item).isSelected())
            return false;
    }
    return true;
}

在我的MainActivity中,当按钮onClick时我调用该方法。然后我得到了它的价值。

public void onClickNeste_sjekkliste (View v) {
    CheckboxListAdapter test = new CheckboxListAdapter(null);
    test.allChecked();
    boolean ifCheckedAll = test.allChecked();

    if (ifCheckedAll == false) {
        Log.d("CheckedAll", "false");
    }
    else if (ifCheckedAll == true) {
        Log.d("CheckedAll", "true");
    }   
}