我正在实现一个 ListView,其中包含一个带有 LoaderCallbacks 的自定义 CursorAdpater。当 OnCreatLoader 被调用时,我正在运行一个从数据库中获取光标的 AsyncTaskLoader。我注意到在加载光标后调用 swapCursor 有延迟。有没有解决方案,比如一次加载 10 个项目?如果是这样,我在哪里可以做到这一点?
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args)
{
// Create the Cursor that will take care of the data being displayed
Log.d("TAG", "onCreateLoader...");
return new MessageAsyncTaskLoader(getActivity());
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor)
{
// Now Bind the data to the View
Log.d("TAG", "onLoadFinished...ARG1= " + cursor);
mCusrorAdapter.swapCursor(cursor);// This is were the delay is...
}
public static class MessageAsyncTaskLoader extends AsyncTaskLoader<Cursor>
{
Cursor cursor;
public MessageAsyncTaskLoader(Context context)
{
super(context);
}
@Override
protected void onStartLoading()
{
super.onStartLoading();
mCusrorAdapter = new CustomCursorAdapter(mContext);
mListView.setAdapter(mCusrorAdapter);
forceLoad();
}
@Override
public Cursor loadInBackground()
{
cursor = mContext.getContentResolver().query(CONTENT_URI, null, null,null,
DataBase.COLUMN_MESSAGE_DATE+ " DESC");
return cursor;
}
@Override
protected void onStopLoading()
{
super.onStopLoading();
cursor.close();
}
}