2013-02-26 31 views
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 
} 

} 

}

回答

1

你試過把裝載機的片段,而不是適配器,並可能將其激活的方法。 嘗試在活動中運行裝載程序,並使用FragmentStatePageAdapter(與列表adapater相似)更新ViewPager適配器,而不是FragmentPagerAdapter。

+0

我會試試看,謝謝。 – user2110291 2013-02-26 08:47:21

相關問題