我正在使用带有 ImageDownloader 的非常简单的 CursorLoader。ImageDownloader 正在运行,除了 CursorLoader 之外的所有内容都完成了,然后 ImageDownloader 开始下载图像,但 GridView 没有使用下载的图像进行更新。
在我的 ListFragment 中,我有以下onActivityCreated方法:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
Log.d(TAG, "onActivityCreated");
super.onActivityCreated(savedInstanceState);
cursorAdapter = new OURSVPImageAdapter(getActivity(), null);
// set the adapter on the gridview
mGridView.setAdapter(cursorAdapter);
// load the data
getActivity().getSupportLoaderManager().initLoader(2, null, this);
}
我的 CursorLoader 如下:
public static final class PhotoCursorLoader extends SimpleCursorLoader {
Context mContext;
public PhotoCursorLoader(Context context) {
super(context);
Log.d("PhotoCursorLoader", "Constructor");
mContext = context;
}
@Override
public Cursor loadInBackground() {
Log.d("PhotoCursorLoader", "loadInBackground");
PhotosDataSource datasource = new PhotosDataSource(mContext);
# STEP 1
return datasource.getAllPhotos(((EventActivity) mContext).getEventId());
}
}
检索所有照片的标记为# STEP 1的行只是检索光标的方法,如下所示:
public Cursor getAllPhotos(long event_id) {
Log.d(TAG, "getAllPhotos");
Cursor mCursor = getWritableDatabase().query(true, TABLE_NAME, COLUMNS_PHOTOS, DatabaseConstants.KEY_EVENT_ID + "=" + event_id,
null, null, null, null, null);
return mCursor;
}
因此,这是 ListFragment 的 CursorLoader,当返回该 Cursor 时,它假定它是完整的,这是正确的。据我了解,setAdapter()方法实际上会触发getView方法。
我遇到的麻烦是一切似乎都运行良好,我的日志输出正在正确输出图像的 url,断点都显示合法数据,但问题是我的网格视图永远不会用图像更新ImageDownloader 检索。
编辑
这是SimpleCursorLoader
我正在使用的:https ://gist.github.com/1217628