【问题标题】:How to mantain state of checkbox in listview even if the activity destroed in android即使活动在android中被破坏,如何在listview中保持复选框的状态
【发布时间】:2013-11-14 09:37:30
【问题描述】:

在我的应用程序中,我有一个列表视图。列表视图的每个项目都包含一个文本视图和一个复选框。当我单击其中一个复选框时,它现在被选中。但是当我从活动返回到上一个活动时此复选框再次变为未选中。我正在为 listview 使用自定义适配器。所以请帮助我如何修复它。谢谢

【问题讨论】:

  • 当你回到你的Activity时,你的Activity会重新创建,所以你需要存储你的复选框值然后你可以使用它来维护复选框的状态。
  • 根据我的经验,getview 似乎在最后被触发,这就是为什么 'onRestoreInstanceState()' 和 'onConfigurationChanged()' 无法成功,因为 getview 将重置我的复选框在初始化时不可见布局xml文件。

标签: android listview checkbox android-listview


【解决方案1】:

您应该将复选框的状态保存在 SharedPreferences 中,如下所示。详情请参考this link

保存状态:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("checked", checkboxStatus);
editor.commit();

检索状态:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
boolean checked = prefs.getBoolean("checked", false);

【讨论】:

  • 但是我有一堆列表视图项目和对应的复选框。所以我如何将其保存在共享首选项中。
  • 例如,通过向列表视图的每个元素添加一个唯一标签,并将其用作键(或键的一部分),这样您的列表适配器就知道在生成视图时需要哪个首选项获取视图。
【解决方案2】:

尝试使用 sqlite 数据库并将复选框的状态存储到其中。然后在需要时检索数据。

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多