Метод, который просматривает чекбоксы в списке
Я экспериментирую с этим примером проекта: http://schimpf.es/listview-with-checkboxes-inside/
Я добавил кнопку внутри XML-файла, который содержит ListView. И когда он нажимается, я хочу метод, который просматривает массив флажков и проверяет, все ли проверены.
Может кто-то помочь мне, пожалуйста?
3 ответа
Попробуй это:
private boolean checkBoxes(){
for(SampleData s : dataList) if (s.selected == false) return false;
return true;
}
Я не могу заставить это работать. Это всегда возвращает ложь.
Я положил метод в 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");
}
}
Перебрать каждую запись в dataList. Если вы получили тот, который не установлен, верните false. Если они все прошли тест, возвращают true:
private boolean allChecked()
{
for(Object item : dataList)
{
if (!(SampleData)item.isSelected())
return false;
}
return true;
}
Обратите внимание, что dataList был определен как ArrayList типа Object, а не типа SampleData. Таким образом, когда вы повторяете каждую запись, она должна быть приведена к SampleData.
РЕДАКТИРОВАТЬ:
Чтобы использовать это, измените класс Activity, чтобы "адаптер" был переменной класса:
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");
}
}