Android 中数据与 UI 之间松耦合的最佳实践 - Adapter、Filter、CursorLoader 和 ContentProvider
Best practice for loose coupling between data & UI in Android - Adapter, Filter, CursorLoader and ContentProvider
假设我们有一个 Activity
和 n
TextView
代表一行注释。这些笔记存储在某个地方(本地数据库、网络等),每次调用 onResume()
时,都会根据存储的数据绘制适当数量的 TextView
。
现在,假设用户想要删除一条笔记,解析特定 TextView
回到其存储实体的最佳方式是什么?
目前,我知道的唯一方法是使用 View.Tag
,并让一些管理人员将其转换为数据实体,但它看起来相当混乱。
还有其他选择吗?
在Android中,Adapter
充当视图和数据模型之间的桥梁。您可以在 ListView
或 GridView
中显示 n TextViews
,并且当用户添加或删除注释,首先更新本地或服务器数据库。 Web 服务调用完成后 and/or 本地数据库更新,新数据被添加到底层 Adapter
。然后通过调用 adapter.notifyDataSetChanged()
刷新 View
。这就是实现它的方法。
方法:
- 如果更新本地
SQLite
数据库,您可以考虑使用
CursorAdpater
保存 View
的数据,因为它直接映射中的条目
本地数据库到 View
.
- 如果使用
ContentProvider
,甚至可以合并
一个 CursorAdapter
和一个
LoaderManager
和一个
CursorLoader
:
这些插入 Activity
/ Fragment
生命周期和监控
已发布更改的基础 ContentProvider
自动转到单独线程上的 View
。
- 也可以使用
Filter
与 Adapter
一起定义一个动态机制
即时对数据条目进行排序。过滤由
Filter
在单独的线程上,根据用户输入的查询,
可能在一个
AutoCompleteTextView
.
参考文献:
- 请参阅检索列表
联系人
教程。此处的示例从
联系人
ContentProvider
基于动态的字母顺序搜索
用户。它利用 CursorAdapter
、CursorLoader
和
LoaderManager
监控和更新数据,并显示
搜索结果 ListView
.
- 另请参阅 Android Realtime (Instant) Search with Filter Class 示例,其中显示了如何使用
Filter
。
- Android AutoCompleteTextView with Custom Adapter filtering.
- Android AutocompleteTextView using ArrayAdapter and Filter.
假设我们有一个 Activity
和 n
TextView
代表一行注释。这些笔记存储在某个地方(本地数据库、网络等),每次调用 onResume()
时,都会根据存储的数据绘制适当数量的 TextView
。
现在,假设用户想要删除一条笔记,解析特定 TextView
回到其存储实体的最佳方式是什么?
目前,我知道的唯一方法是使用 View.Tag
,并让一些管理人员将其转换为数据实体,但它看起来相当混乱。
还有其他选择吗?
在Android中,Adapter
充当视图和数据模型之间的桥梁。您可以在 ListView
或 GridView
中显示 n TextViews
,并且当用户添加或删除注释,首先更新本地或服务器数据库。 Web 服务调用完成后 and/or 本地数据库更新,新数据被添加到底层 Adapter
。然后通过调用 adapter.notifyDataSetChanged()
刷新 View
。这就是实现它的方法。
方法:
- 如果更新本地
SQLite
数据库,您可以考虑使用CursorAdpater
保存View
的数据,因为它直接映射中的条目 本地数据库到View
. - 如果使用
ContentProvider
,甚至可以合并 一个CursorAdapter
和一个LoaderManager
和一个CursorLoader
: 这些插入Activity
/Fragment
生命周期和监控 已发布更改的基础ContentProvider
自动转到单独线程上的View
。 - 也可以使用
Filter
与Adapter
一起定义一个动态机制 即时对数据条目进行排序。过滤由Filter
在单独的线程上,根据用户输入的查询, 可能在一个AutoCompleteTextView
.
参考文献:
- 请参阅检索列表
联系人
教程。此处的示例从
联系人
ContentProvider
基于动态的字母顺序搜索 用户。它利用CursorAdapter
、CursorLoader
和LoaderManager
监控和更新数据,并显示 搜索结果ListView
. - 另请参阅 Android Realtime (Instant) Search with Filter Class 示例,其中显示了如何使用
Filter
。 - Android AutoCompleteTextView with Custom Adapter filtering.
- Android AutocompleteTextView using ArrayAdapter and Filter.