我目前正在使用 android API。目前我正在做一些 GUI 数据库绑定,我开始有点恼火。
我有一个简单ListActivity
的列表项自定义布局。现在我想将底层绑定ListView
到数据库中的一个表。每当我对数据库进行更改时,我都希望能够通知 ListView 刷新自身并更新 GUI。起初,问题看起来很简单:只需添加一个SimpleCursorAdapter
,传递一个用于获取数据的游标,将列绑定到布局 id 和你的 down。每当您想要进行刷新时,只需调用notifyDataSetChanged()
ListView 即可完成,对吗?不!
事实证明,这种方式将在 UI 线程中查询数据库,这显然是一件坏事,因为它会降低性能并可能导致“应用程序无响应”错误。
目前,看起来唯一的方法是使用 Loaders 和 ContentProviders。这可能是处理数据访问的最抽象和最简洁的方式,但它也添加了大量代码(尤其是在 ContentProvider 本身中,您必须为“解析”请求做很多丑陋的 if-else switch-case 处理)。
所以我的问题是:将数据库表连接到 ListView(或任何其他 UI 组件)的最新技术(并且向后兼容 API 级别 <11)方法是什么?我真的必须使用 ContentProvider 吗?
为什么这么复杂?即:扫描蓝牙设备可以用大约 20 行代码来实现,但是(从我的角度来看)更常见的事情,比如 data-ui-connection,你必须实现至少两个类,每个类 100+ loc。这太疯狂了!