シナリオは次のとおりです。Twitter フィードを表示する単純な ListView があります。sqlite からツイートを取得する CursorAdapter があります。カーソルで requery() を呼び出すと、データベースに追加された新しいツイートが取得されることを期待しています。これはすべて正常に機能し、これが発生した後、新しいアイテムは ListView でも表示されます。
問題は、アイテムの位置オフセットに基づいてスクロール位置が保存されているように見えることです。したがって、ListView の最初の表示位置が 4 であるとします。再クエリを実行して 2 つの新しい項目がリストの一番上に追加されると、ListView は最初に表示される項目のスクロール位置を 4 に保ちますが、リストには 2 つの新しい項目があるためです。 、更新前とは異なる項目が 4 位に表示されるようになりました。この画像は前後を示しています。
以前はツイート Dが最初に表示されるアイテムでしたが、その後、ツイート Bが最初に表示されるアイテムになっていることに注目してください。
私の質問は、再クエリを呼び出すときにカーソル位置に基づいて同じスクロール位置を維持するにはどうすればよいですか?