【问题标题】:Using CursorAdapter when displaying a single item显示单个项目时使用 CursorAdapter
【发布时间】:2014-03-26 04:01:48
【问题描述】:

我有一个ListFragment,它根据处理列表视图的标准方式显示使用CursorLoaderCursorAdapter 获得的项目列表。这本身工作正常,但是我不确定如何使用相同的模式来显示所选项目的详细视图。

previous StackOverflow question 对此进行了讨论,但在我看来,建议的解决方案都不是最佳的。将ListView 与单个项目一起使用似乎过度杀伤和浪费资源,而直接在活动中执行工作似乎会使活动因数据访问和 UI 功能而过载。它也失去了在 Activity 和底层存储之间保持数据同步的能力。

是否有一些中间立场保留加载器、活动和适配器之间的拆分,但针对单个项目而不是列表?

【问题讨论】:

  • 为什么不能简单地使用另一个加载器来检索该单曲的元素详细信息?
  • DetailedActivity 和通过 Intents 传递项目 Uri/id 有什么问题?

标签: android android-cursor android-cursorloader


【解决方案1】:

您可以不使用 Adapter 和 ListView。

CursorLoader 返回一个光标。您可以访问游标而不将其传递给适配器。 只需确保光标至少包含您的一行。

if (cursor != null && cursor.moveToFirst()) {
  // do whatever, ie String myString=cursor.getString(0)
  // in case you fetch a string as the first element of your projection  
}

【讨论】:

  • 如果我放弃适配器但保留加载器,我是否会保留在底层数据存储更改时刷新数据的能力?
  • 正确。发生这种情况时,加载程序会为您提供一个新光标。
  • 只返回一行不需要使用Loader,使用Cursor.registerContentObserver自动刷新
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多