0
我試圖用一個遊標加載器實現FragmentPagerAdapter
。但是,我似乎無法訪問getItem()
內的遊標,因爲在嘗試訪問遊標時,因爲它尚未在onLoadFinished()
中設置,所以我得到一個空引用錯誤。FragmentPagerAdapter實現LoaderManager.LoaderCallbacks <Cursor>
將onLoadFinished()
不完整,直到getItem()
完成?
有沒有更好的方法來加載遊標數據?我可以直接查詢ContentProvider
並將結果存儲在我的光標中,但認爲裝載程序是首選。
public class MyAdapter extends FragmentPagerAdapter implements LoaderManager.LoaderCallbacks<Cursor>{
private Cursor cursor;
public MyAdapter(FragmentManager fm) {
super(fm);
getLoaderManager().initLoader(0, null, this);
}
@Override
public int getCount() {
return 13;
}
@Override
public Fragment getItem(int position) {
Bundle args = new Bundle();
cursor.moveToPosition(position);
args.putString(TextViewFragment.TITLE, cursor.getString(1));
args.putInt(TextViewFragment.POSITION_KEY, position);
return TextViewFragment.newInstance(args);
}
@Override
public CharSequence getPageTitle(int position) {
return "Fragment # " + position;
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
// TODO Auto-generated method stub
CursorLoader cursorLoader = new CursorLoader(getActivity(), TestContentProvider.CONTENT_URI, null, null, null, null);
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
// TODO Auto-generated method stub
cursor = arg1;
//throw new IllegalArgumentException("We are HEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHEREHERE");
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
// TODO Auto-generated method stub
}
}
}
我會試試看,謝謝。 – user2110291 2013-02-26 08:47:21