私のsqliteデータベースからのデータで提案リストを完成させる拡張されたCursorAdapterクラスがあります。これまでのところ、android 2.3 では問題なく動作していましたが、android 4.0.1 では非常に遅く感じます。もう 1 つのことは、第二に、提案リストのスクロールも非常に遅いことです。Ice Cream Sandwich の CursorAdapter に関する既知の問題はありますか? Nexus S デバイスでテスト済み。
編集:
アプローチを変更し、CursorLoader を使用しようとしましたが、クエリを実行してオートコンプリート リストを埋めるにはまだ時間がかかります。
作成時:
mSuggestionAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, null,
new String[] { "name_en", "pcode" },
new int[] { android.R.id.text1, android.R.id.text2 }, 0);
search_text.setAdapter(mSuggestionAdapter);
getLoaderManager().initLoader(0, null, this);
onTextChanged:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
getLoaderManager().restartLoader(0, null, MapActivity.this);
}
CursorLoader インターフェイス:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Uri baseUri = SearchableProvider.CONTENT_URI;
String select = DataBaseHelper.getWhereStatement(search_text.getText().toString());
return new CursorLoader(this, baseUri,
DataBaseHelper.SEARCHABLE_SUMMARY_PROJECTION, select, null,
"name_en" );
//return null;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// TODO Auto-generated method stub
mSuggestionAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
// TODO Auto-generated method stub
mSuggestionAdapter.swapCursor(null);
}
ArrayAdapter でも同じことを試しました。しばらくしてからデータを取得します (20 ~ 30 秒程度) が、オートコンプリート Textview のリストが表示されません。
遅延は、onCreateLoader (CursorLoader を非同期的に返す) と onLoadFinished() の間にあります。