我正在尝试这个示例项目:http://schimpf.es/listview-with-checkboxes-inside/
我在包含ListView的xml文件中添加了一个按钮。 当它被按下时,我想要一个方法,扫描复选框数组并检查是否所有复选框都被检查。
有人能帮助我吗?
答案 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");
}
}