私の問題: (カスタマイズされた) SimpleCursorAdapter を介してコンテンツを更新するたびに、ListView のスクロール位置が一番上にリセットされます。更新時に ListView のスクロール位置を維持したいと思います。
毎回新しいアダプタ インスタンスを作成して を使用することから始めましたが、この議論ListView.setAdapter()
によると、アダプタをリセットするのではなく更新する必要があります。正しく動作する SimpleCursorAdapter に対してこれを行う方法が見つかりません。
メソッドの引数を省略して、私が試したいくつかのことを次に示します
。-SimpleCursorAdapter.changeCursorAndColumns()
新しいカーソルを使用すると、アダプターは正常に更新されますが、スクロール位置はリセットされます。
-SimpleCursorAdapter.changeCursor()
同じように動作します。
- SimpleCursorAdapter.swapCursor()
api 11 までは利用できません。私は api 8 用に開発しています。
- SimpleCursorAdapter.notifyDataSetChanged()
ListView を更新しません。(おそらく、私が見逃している別のステップがあります。)
- ListView.invalidate()
ListView を更新しません。
- SimpleCursorAdapter.requery()
ListView を空白にし、廃止予定です。
- 私はListView.setSelection()
解決策に精通していますが、更新時に ListView をまったく動かしたくありません。これにより、リスト内の位置にスナップされます。
これは、一般的で単純な問題であるように思われます。誰かがそれに対処しましたか?