0
我在通知CursorAdapter數據已更改時遇到問題。用的AsyncTask從asynctask更新CursorAdapter
public class MyListFragment extends ListFragment implements LoaderCallbacks<Cursor> {
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new MyListCursorLoader(getActivity());
}
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
MyCursorAdapter adapter = new MyCursorAdapter(getActivity(),(MyCursor)cursor);
setListAdapter(adapter);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(0, null, this);
}
private static class MyCursorAdapter extends CursorAdapter {
... some code ...
}
private static class MyListCursorLoader extends SQLiteCursorLoader {
... code ...
}
SQLite數據庫更新(有公共接口和ListFragment與聽衆實現它),我嘗試刷新ListAdapter與onPostExecute,但我真的不知道怎麼辦。
的AsyncTask代碼
public class MyDownloader extends AsyncTask<Void, Void, Void> {
public interface OnMyDownloaded {
void onMyDownloaded();
}
public JSONDownloader(Context context, OnMyDownloaded listener) {
...code...
}
protected Void doInBackground(Void... params) {
...code...
}
protected void onPostExecute(Void result) {
listener.onMyDownloaded();
}
請幫助我明白我應該MyListFragment內部類做
private class OnEventDownloaded implements OnJSONDownloaded {
?????
}
這是我第一次嘗試。但是在fragment中實現的回調函數類似於'getLoaderManager()。restartLoader(0,null,this);',但是我應該如何從內部類中調用回調函數? –
我懂了。我問從構造的AsyncTask回調:'公共MyDownloader(上下文的背景下,LoaderCallbacks回調,OnMyDownloaded聽衆){ \t \t \t \t ... ...代碼 \t}' 並呼籲'getLoaderManager() .restartLoader(0,null,callback);'來自監聽器(但我認爲它也可以從onPostExecute工作)。 –
是的,你是對的。上帝保佑! – Shamm