よくわかりませんが、プロバイダーとは ContentProvider のことですか? あるいは同じだと思います。
何か案は?
@Luksprog からの返信に感謝します。また、CursorAdapter、CursorFilter、および Filter のソース コードを読みました。CursorFilter は Filter を拡張し、CursorAdapter は Filterable と CursorFilter.CursorFilterClient を実装していることがわかります。
したがって、 を呼び出すとgetFilter.filter(s)
、新しいカーソルが取得され、CursorAdapter が新しいカーソルに自動的にリセットされます。
しかし、 を呼び出すとrunQueryOnBackgroundThread(s)
、新しいカーソルしか得られません。したがって、手動で呼び出す必要はありません。
また、 filter が呼び出さrunQueryOnBackgroundThread(s)
れ、runQueryOnBackgroundThread(s
) が が呼び出されるためFilterQueryProvider.runQuery(s)
です。再クエリ コードを設定する最善の方法は、次を呼び出すことです。
CursorAdpapter adapter;
adapter.setFilterQueryProvider(new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
...
return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
}
});
次にadapter.getFilter().filter(s);
、再クエリが必要なときに使用します。