0

私は次のことをしようとしています

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 メソッドでもっと賢いものが必要ですか?

ヒントや指針を教えてください。

ありがとう !!!

4

0 に答える 0