【发布时间】:2016-12-20 19:58:39
【问题描述】:
我在 onLoadFinished 中有代码行,用于片段中的加载程序管理器回调。代码的问题是,最喜欢的电影需要显示在 ArrayAdapter 中,所以无论什么原因,它是零,而日志语句显示光标或数据不为空。
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
Log.i(TAG, "Loader Manager Loading Finished: " + data.getCount());
if (data != null && data.getCount() > 0) {
while (data.moveToNext()) {
favouriteMovies.add(
new Movie(
data.getString(2),
data.getString(3),
data.getString(4),
data.getInt(1),
data.getString(5),
data.getDouble(6),
data.getDouble(7)
));
}
setMovies(favouriteMovies);
hideLoadingProgress();
mAdapter.notifyDataSetChanged();
} else {
showEmptyView(EMPTY_VIEW_TYPE_LOCAL);
hideLoadingProgress();
}
}
如何编写此代码,以便在调用 setMovies() 方法之前实际等待 while 语句完成。当我将我的应用程序最小化到后台并恢复它时,电影会显示出来,但它在第一次调用时不起作用。
【问题讨论】:
-
"The problem with the code is that the favoriteMovies is needed to be displayed in the ArrayAdapter",是的,这确实是个问题,在处理基于Cursor的数据时不要使用ArrayAdapter,而是使用SimpleCursorAdapter(或任何其他CursorAdapter) -
你是对的,但是 SimpleCursorAdapter 不会作为数据的一部分,它是使用映射到模型的改造从服务器作为 json 获取的,所以我有两个数据源。
-
然后使用
MatrixCursor,很可能与MergeCursor结合使用 -
我会检查的。感谢您的回复。
标签: android cursor android-loadermanager