【问题标题】:How to get correct position of a checkbox in a scrollable listView?如何在可滚动列表视图中获得复选框的正确位置?
【发布时间】:2013-07-27 09:03:58
【问题描述】:

我有一个可滚动的列表视图,每行有 2 个文本视图、3 个图像按钮和 1 个复选框。

在 listView 的 Header 中,我在包含 listView 的所有复选框的列上方有一个删除按钮。

当通过滚动 listView 随机检查 2 个或多个复选框时,我必须执行 listView 中对象的删除操作,然后单击顶部的删除按钮。

但问题是我没有得到所选复选框的正确位置。此外,有时我得到正确的位置,但要删除的对象仍然是错误的。因此,可能由于列表的滚动性质,整个功能都会受到影响。

我是否应该在适配器类的持有者中占据一席之地,并将选中或未选中复选框的状态与我的对象绑定。

我应该使用 checkBox.setOnCheckedChangeListener() 还是 deleteButton.setOnClickListener()。 如果我使用后一种,那么如何在按下删除按钮之前获取列表中所有对应的复选框被选中的对象? 以及所有相关的代码应该放在哪里……在 listAdapter 类中还是在 Activity 中?

请帮我找到解决这个问题的办法..

【问题讨论】:

  • 这是一个经典的 ListView 问题,在这里已经多次讨论过。请更好地使用搜索。

标签: android android-listview


【解决方案1】:

首先,在您的 getView() 方法中,您应该为每个复选框设置一个特定的标签。例如:check1.setTag(position) 那么您应该为您的复选框实现 OnCheckBoxChangeListener 并为您的删除按钮实现 OnClickListener。如您所知,onCheckBoxChangeListner 的设置必须在 getView() 方法中。然后,在 onCheckedChanged() 方法中的 chechBoxes 的 getTag() 方法的帮助下,将检查其复选框的列表位置添加到 ArrayList。

【讨论】:

    【解决方案2】:

    试试getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {}

    【讨论】:

    • 不确定这与上述问题有何关系。
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多