【问题标题】:Android maintain position of selected item in ListViewAndroid在ListView中维护所选项目的位置
【发布时间】:2011-11-14 03:06:53
【问题描述】:

我有一个带有复选框的列表视图。

我有一个自定义 CursorAdapter,如果它的 get View 方法中的字段值为“1”,它会检查复选框。

当我单击列表视图中的列表项时,它会选中复选框并将字段更新为“1”。我遇到的问题是,当我在自定义适配器上调用 changecursor 方法时,它会重新加载所有内容并指向第一个项目,而不是我刚刚单击的项目。

在 changeCursor 方法中,我有以下内容:

    public void changeCursor(Cursor cursor) {
    super.changeCursor(cursor);
    init(cursor);
    notifyDataSetChanged();
}

有没有办法保持位置或解决方法来重新加载光标而不使其跳转到第一项?

【问题讨论】:

    标签: android listview simplecursoradapter


    【解决方案1】:

    您基本上需要一些数据结构来跟踪检查项目。您可以在自定义适配器中使用布尔数组。

    更多信息请参考此链接Custom listview with checkbox problem

    带有复选框的列表视图

    如果您正在寻找示例,请尝试使用此 http://appfulcrum.com/?p=281 教程,该教程使用共享首选项解决列表视图中的复选框问题。

    谢谢

    【讨论】:

    • 好的,我有问题。希望这是有道理的。当我使用 getView 加载列表视图时,这意味着我从光标中获取值,我使用该值在 arrayList 中设置布尔值。然后我使用这个数组列表来显示复选框。那里没问题。当他选中复选框时,问题就开始了。数据发生变化,但光标保持不变。我在arrayList中将位置的值设置为true,但是当getView被调用时,它会触发OLD光标并加载旧数据,将arraylist布尔值覆盖为false。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2011-05-29
    • 2018-11-23
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多