【发布时间】:2014-11-20 14:44:42
【问题描述】:
我有一个 ListActivity 并使用 CursorLoader 来加载存储在 ContentProvider 中的数据。我使用扩展 CursorAdapter 的自定义类来显示列表项。在 LoaderCallbacks onLoadFinished 我有以下内容:
public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
cursorAdapter.swapCursor(newCursor);
}
我有一个 ListActivity 的自定义布局,其中包括一个带有 android:id="@android:id/empty" 的 TextView。
问题是,当我第一次打开应用程序时,调用swapCursor 不会刷新 ListView,即使 ContentProvider 中有数据要显示。当我向 ListView 添加新项目时,列表会正确刷新。但是,如果我注释掉 TextView,它在没有数据可用时显示一个简单的文本,应用程序将按预期工作。 swapCursor 调用自动相应地更新 ListView。
任何关于为什么会发生这种情况的想法,或者是否有适当的方法可以做到这一点,因为我相信调用 notifyDataSetChanged 不会完成这项工作,因为在非常特殊的情况下刷新失败?
【问题讨论】:
-
如果不再使用旧光标,您应该使用
changeCursor。
标签: android android-listview android-cursoradapter android-cursorloader