【问题标题】:Best practice for loose coupling between data & UI in Android - Adapter, Filter, CursorLoader and ContentProviderAndroid中数据与UI松耦合的最佳实践——Adapter、Filter、CursorLoader和ContentProvider
【发布时间】:2015-04-05 09:58:18
【问题描述】:

假设我们有一个 Activityn TextViews 代表一行注释。这些笔记存储在某个地方(本地数据库、网络等),每次调用onResume(),都会根据存储的数据绘制适当数量的TextViews。

现在,假设用户想要删除一个便笺,将特定 TextView 解析回其存储实体的最佳方法是什么?

目前,我知道的唯一方法是使用View.Tag,并让一些经理将其转换为数据实体,但它看起来相当混乱。

还有其他选择吗?

【问题讨论】:

    标签: android android-sqlite android-adapter android-cursorloader android-loadermanager


    【解决方案1】:

    在 Android 中,Adapter 充当视图和数据模型之间的桥梁。您可以在ListViewGridView 中显示n TextViews,并且当用户添加或删除注释时,本地或服务器数据库是第一次更新。在完成 Web 服务调用和/或本地数据库更新后,新数据将添加到基础 Adapter。然后通过调用adapter.notifyDataSetChanged() 刷新View。这将是做到这一点的方法。

    方法:

    • 如果更新本地 SQLite 数据库,您可以考虑使用 CursorAdpater 保存View 的数据,因为它直接将条目映射到 本地数据库到View
    • 如果使用ContentProvider,甚至可以合并 CursorAdapterLoaderManager 和一个 CursorLoader: 这些插入Activity / Fragment 生命周期和监控 底层ContentProvider 用于发布的更改 自动发送到单独线程上的View
    • 也可以使用 FilterAdapter 一起定义一个动态机制 即时对数据条目进行排序。过滤由 Filter 在单独的线程上,根据用户输入的查询, 可能在一个 AutoCompleteTextView

    参考资料:

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2011-11-26
      相关资源
      最近更新 更多