0

次のように検索ビューを設定しました。

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 行あります。

4

0 に答える 0