1) リストをレンダリングする CursorAdapter または SimpleCursorAdapter を作成します。
2) リストを少し下にスクロールして、位置 0 にならないようにします。
3) 作成した CursorAdapter フィルターを実行します。
結果:
フィルタによってデータが正しく更新され、リスト ビューが新しいデータで更新されます。
大きな問題は、リストの位置/選択が以前の位置にとどまることです (新しい結果に十分な行がある場合)。
フィルター内で setSelection(0) を実行して常に位置を 0 に設定したいのですが、その方法がわかりません。明らかな提案はありますか?
dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
listView.setSelection(0);
return newCursor;
});
データが更新される前に setSelection() が作成され、カーソルがスワップされるため、上記は機能しません。