アプリにカーソルを返す関数があります。カーソルは多くの行のデータを返す可能性があり、2 つの結合されたテーブルから常に 5 列のデータを返します。列 1 ~ 4 は変更されません。列 5 は、ユーザーのアクションに基づいて変更できます。行の変更から 5 番目の列が変更されたときに通知するコンテンツ オブザーバーを登録するにはどうすればよいですか。ここに例があります。私のメインのアクティビティでは、私は呼び出します
Cursor cursor = db.getNotifiedCursor();
これにより、5 列のデータが得られます。次に、これらの 5 列のデータを取得し、カーソル アダプターを使用して各行をリスト アイテムとして ListView に配置します。
ユーザーがリスト項目をクリックしていない場合、その項目の背景は単色です。リスト項目をクリックすると、別の色になります。これは単に、閲覧済みのアイテムと未閲覧のアイテムを区別するためのものです。
5 列目は、ヌル、ゼロ (0)、または 1 (1) にすることができます。null の場合、ListView にはありません。ゼロの場合、最初の背景色でリスト ビューに表示されます。1 の場合、2 番目の背景色でリストビューに表示されます。
この問題を解決する最初の方法は、正しい色でリスト ビューからデータを再ロードする 750 ミリ秒ごとに無限にループする Handler を使用することでした。ループバージョンは少しハックっぽいので、データが変更されたときにのみそのハンドラーを呼び出すことをお勧めします。