私は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であり、そのカーソルが返されるときに完全であると見なされます。これは正しいことです。私の理解では、setAdapter()メソッドは、実際にgetViewメソッドをトリガーするものです。
私が抱えている問題は、すべてが正常に実行されているように見えることです。ログ出力は画像のURLを正しく出力し、ブレークポイントはすべて正当なデータを示していますが、問題は、グリッドビューが画像で更新されないことです。 ImageDownloaderが取得します。
編集
これはSimpleCursorLoader
私が使用しているものです:https ://gist.github.com/1217628