次のように検索ビューを設定しました。
searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchAdapter = new SimpleCursorAdapter(this, R.layout.listentry, null, new String[] { "name" }, new int[] { R.id.name_entry }, 0);
searchView.setSuggestionsAdapter(searchAdapter);
hereを作成し、SimpleCursorAdapter
それを提案アダプターとしてSearchView
オブジェクトに設定します。次に、onQueryTextChanged
メソッドでこれを持っています:
searchAdapter.changeCursor(dbHelper.runAlgorithms(q)); //"q" is the text from searchview
これが私のrunAlgorithms
方法の内容です:
q = q.replace("'", "%27");
q = q.replace("%", "\\%");
Cursor c = db.rawQuery("SELECT _id, name, desc, data FROM verbs WHERE name_unaccented LIKE '" + q + "' ESCAPE '\\'", null);
return c;
ただし、これがすべて呼び出されるたびに (検索ビューでキーを押すたびに)、毎回約 50 から 150 フレームがスキップされます。これは多すぎます。何が問題になっている可能性がありますか / 何が提案を遅らせている可能性がありますか? これはこれを行う正しい方法ですか?クエリ対象のテーブルには ~7500 行あります。