2011-09-28 53 views
2

我可能會離開這裏,但我有一個ArrayAdapter管理ListFragment的靜態數據。非常簡單的東西。但是,我有興趣利用新的LoaderManager類。我仍然可以使用我的ArrayAdapter並編寫我自己的loader嗎?這些文檔似乎暗示這是真實的:Android +使用LoaderManager和ArrayAdapter?

「...這最常見的用途是使用CursorLoader,但是應用程序可以自由編寫自己的加載程序來加載其他類型的數據。」

如果是這種情況,我該如何處理重寫的LoaderManager.LoaderCallbacks接口方法?

@Override 
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {return null;} 

@Override 
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {} 

@Override 
public void onLoaderReset(Loader<Cursor> arg0) {} 

回答

7

如果要創建一個新的類加載器,你可能需要使用不同類型的數據,而不是光標(除非你的新裝載機也返回遊標)。

你的回調應該是這個樣子

@Override 
public Loader<MyDataType> onCreateLoader(int id, Bundle args) { 
    return new MyCustomLoader(...); 
} 

@Override 
public void onLoadFinished(Loader<MyDataType> loader, MyDataType data) { 
    myArrayAdapter.add(data.something()); // etc 
} 

@Override 
public void onLoaderReset(Loader<MyDataType> loader) { 
    myArrayAdapter.clear(); 
} 
+0

謝謝你的帖子,你可以點我的一個很好的例子或教程顯示自定義裝載機的創作方向?我似乎無法找到自定義加載器和Android上的東西。謝謝! – worked

+0

我在哪裏實例化新的適配器,以及何時設置它? – worked

+2

[AsyncTaskLoader](http://developer.android.com/reference/android/content/AsyncTaskLoader.html)文檔包含了如何實現自定義加載程序的示例。 – Rob