問題:リストビューの内容が(カスタマイズされた)SimpleCursorAdapterで更新されるたびに、リストビューがスクロール位置を一番上にリセットします。 ListViewを更新したときにそのスクロール位置を維持したいと思います。ListViewでスクロール位置を維持しながらSimpleCursorAdapterを更新します。
いつも新しいアダプタインスタンスを作成し、ListView.setAdapter()
を使用して始めましたが、this discussionによれば、アダプタをリセットするのではなく、アダプタを更新する必要があります。私は正しく動作するSimpleCursorAdapterのためにこれを行う方法を見つけることができません。新鮮なカーソルでSimpleCursorAdapter.changeCursorAndColumns()
に成功アダプタを更新しますが、まだスクロール位置をリセットします -
:
は、ここではいくつかのメソッドの引数を省略し、私が試したもの、です。
- SimpleCursorAdapter.changeCursor()
は同じように動作します。
- SimpleCursorAdapter.swapCursor()
はapi 11まで利用できません。また、私はAPI 8用に開発中です。
- SimpleCursorAdapter.notifyDataSetChanged()
はListViewを更新しません。 (たぶん別のステップがありません。)
- ListView.invalidate()
ListViewは更新されません。
- SimpleCursorAdapter.requery()
は、ListViewを空白にします。非推奨です。
- 私はListView.setSelection()
ソリューションに精通していますが、リストビューが更新されたときにリストビューが動かないようにしたいと思います。これにより、リスト内の位置にスナップされます。
これは一般的で簡単な問題であるようです。誰かがそれを扱っていますか?
ていると私のため
を働いた答えは以下の私のコメントを参照してください。 SimpleCursorAdapter.changeCursor()は正常に動作します。 – pvans