2012-11-08 69 views
0

我想要構建類似於Android Fragments tutorial的東西:我在左側有一個ListView片段,並且可以在右側顯示一個項目。當第一個列表項加載時在第二個片段中加載項目

現在我試圖通過SimpleCursorAdapter(我通過LoaderManager使用)加載列表中的第一個項目,所有這些都使用Android支持庫。

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    mAdapter = new SimpleCursorAdapter(/* options */); 
    setListAdapter(mAdapter); 
} 

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    CursorLoader cl = new CursorLoader(getActivity()); 
    /* setProjection, etc */ 
    return cl; 
} 

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    mAdapter.swapCursor(data); 
} 

public void onLoaderReset(Loader<Cursor> loader) { 
    mAdapter.swapCursor(null); 
} 

我已經檢查了各種樣品的實現,他們似乎都過於簡單或根本不填充上載,但只是在點擊右邊的片段。

無論如何,我需要實現onLoadFinished,但對於我來說,已經太晚了,因爲我正在加載一個長列表。所以我正在考慮一個onItemLoadedListener的線路,我只會在第一次使用它的時候使用它。但似乎沒有像這樣的東西存在,所以我很困難。

感謝您的指點!

回答

1

你對抗太簡單了嗎?

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    data.moveToFirst(); 
    Bundle b = new Bundle(); 
    // get info from that first item and put into the bundle 
    ... 

    ContentFrag f = new ContentFrag(); 
    f.setArguments(b); 
    getSupportFragmentManager().beginTransaction().replace(R.id.contentLayout, f).commit(); 

    // instantiate and set your adapter 
    ... 
} 

簡單!就像任何其他片段交易一樣。

+0

哇,這很快,謝謝。我在更新了這個問題的同時發佈了這個問題,並且簡短地列出了這個問題,列表很長,onLoadFinished的時間太晚,所以我認爲這不是我的解決方案。 – akirk

+0

好的,我需要回去。實際上,即使列表很長,這也稱爲非常快。作品。謝謝! – akirk

相關問題