我创建了一个自定义ListView,并填充了ArrayList
个对象。它还有一个复选框,允许用户选择某些项目,然后在按钮上单击对它们执行某些操作。
我的问题是:如何遍历ListView代码端?
我查看了ListView的文档,但找不到一个看起来好像是迭代的方法。我是否需要在我的CustomArrayAdapter
中实现这一点?
答案 0 :(得分:2)
你可以用它。你不应该在CustomAdapter中使用nessesary方法。
private void ButtonClick() {
View v;
CheckBox chBox;
for (int i = 0; i < myList.getCount(); i++) {
v = myList.getAdapter().getView(i, null, null);
chBox = (chBox) v.findViewById(R.id.checkBox);//your xml id value for checkBox.
if (chBox.isChecked()) {
doSomething();
}
}
....
}
答案 1 :(得分:2)
我不建议使用Anatol的方法,因为这会为每个项目创建新的视图。解决此问题的最佳方法是处理复选框的单击并相应地更新模型。然后你可以做这样的事情:
ListAdapter adapter = myList.getAdapter();
for (int i = 0; i < adapter.getCount(); i++) {
if (adapter.getItem(i).isChecked()) {
doSomething();
}
}
请注意,需要在模型类中创建isChecked。请让我知道,如果你有任何问题。