私は次のことをしようとしています
1) Activity with a List view
2) Talks to content ContentProvider
3) Populates the ListView with contents of Cursor
4) User can then add new items to database
5) After each item is added I want to refresh the list view to show the updated items.
ポイント5までのすべてが機能します。
そのため、アイテムが追加された後にローダーを再起動するのに助けが必要です.
したがって、データがデータベースに追加された後、次のように呼び出しています。
getLoaderManager().restartLoader(ID, null, MyFragment.this);
そして、ローダーメソッドでは、私は単純に次のことを行います:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Log.w(TAG, "onCreateLoader");
cursorLoader = new CursorLoader(getActivity(),
MyContract.CONTENT_URI,
null, null, null, "_id ASC");
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor); //swap the new cursor in.
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
これが呼び出されると、ListView は空白になります。リスト内の以前の項目はすべて消えます。
アクティビティを終了して再びアクティビティに戻ると、SimpleCursorAdapter はデータベースに追加された項目を ListView に入力します。
だから私はそれらが正しく追加されたことを知っています。
しかし、restartLoader を呼び出した後は表示されません。
Loader を使用して listView を更新する方法を知っている人はいますか?
後で何かを呼び出す必要がありますか
getLoaderManager().restartLoader(1, null, MyFragment.this);`
または、 onLoaderReset メソッドでもっと賢いものが必要ですか?
ヒントや指針を教えてください。
ありがとう !!!