1

頻繁に更新するコンテンツ プロバイダーを持つ Android アプリがあります。上記のデータのリストをロードするために、LoaderManager を使用しています。

詳細ページでは LoaderManager も使用しますが、次のように CursorLoader を作成します。

return new CursorLoader(getActivity(), DataProvider.POST_URI, projection, "_id = ?", new String[]{String.valueOf(post_id)}, null);

ご覧のとおり、テーブルから 1 つのアイテムしか取得していません。行が更新されると、onLoadFinishedコールバックが更新されますが、他の行がテーブルに追加/変更された場合も同様です。それほど面倒なことではありませんが、リスト全体が空白になり、再描画されることがあります。これが複数回発生すると、ユーザーがイライラする可能性があります。

どうすればこの動作を回避できるか知っていますか?

4

1 に答える 1

3

このカーソルローダーを、DataProvider.POST_URI投稿テーブルに使用していると思われる に関連付けているため、リロードが行われています。このテーブルのいずれかの要素に変更があると、その要素を持つすべてのカーソルUriに通知されます。1 つのアイテムの通知を受け取りたい場合は、Uriその 1 つのアイテムだけに一致する新しいスキームを実装する必要があります。例については、 UriMatcherクラスのドキュメントをご覧ください。PEOPLEandの場合と同様のことを行う必要がありますPEOPLE_ID

編集

ContentProvider ここで良いチュートリアルを見つけることができます。特にセクション 9.4 は、 を正しく実装するのに役立ちますContentProvider

于 2013-03-15T19:06:32.100 に答える