【问题标题】:Find/Iterate through an Android CustomListView, to find selected checkboxes通过 Android CustomListView 查找/迭代,以查找选中的复选框
【发布时间】:2014-01-05 00:22:14
【问题描述】:

我创建了一个自定义 ListView,并填充了 ArrayList 的对象。它还有一个复选框,允许用户选择某些项目,然后单击按钮对它们进行操作。

我的问题是:如何遍历 ListView 代码端? 我查看了 ListView 的文档,但找不到看起来好像迭代的方法。我需要在我的CustomArrayAdapter 中实现这个吗?

【问题讨论】:

  • 有类似onListItemClick的方法吗?

标签: java android listview checkbox


【解决方案1】:

你可以使用它。你不应该在 CustomAdapter 中实现任何必要的方法。

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();
        }
    }
....
}

【讨论】:

  • “myList”是 ListView 吗?感谢您的帮助,这看起来应该可以工作! :)
  • @瑞典建筑师,是的。 MyList 是 ListView。
【解决方案2】:

我不建议使用 Anatol 的方法,因为这将为每个项目创建新视图。解决此问题的最佳方法是处理复选框的单击并相应地更新您的模型。然后你可以这样做:

ListAdapter adapter = myList.getAdapter();

for (int i = 0; i < adapter.getCount(); i++) {
    if (adapter.getItem(i).isChecked()) {
        doSomething();
    } 
} 

请注意,需要在模型类中创建 isChecked。请让我知道,如果你有任何问题。

【讨论】:

  • 模型类是哪个类??感谢您的帮助!
  • @MobileSam,在我的变体中,我们存在效率问题,在您的变体中,我们必须编写更多代码,这是更复杂的实现。我认为只有在遇到问题时才应该考虑效率。尽管如此,你的回答很酷,我投了赞成票。
  • 我只想在单击按钮时触发它,然后向从列表中选择的人发送 SMS 消息。这看起来好像是这样做的。谢谢!!我不太在意效率,但关心编写“整洁”的代码。
  • 哪个类是我的模型类-是我的自定义适配器类吗?谢谢
  • 您的模型是您的自定义适配器将拥有的类。您的适配器可能会扩展 ArrayListAdapter,它将类型作为模板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多