У меня есть расширенный класс CursorAdapter, который дополняет список предложений данными из моей базы данных sqlite.До сих пор с Android 2.3 раньше работал нормально, но сейчас в Android 4.0.1 чувствует себя очень медленно.Другое дело, во-вторых, что список предложений также очень медленно прокручивается.Есть ли известная проблема с CursorAdapter в Ice Cream Sandwich?Протестировано на устройстве Nexus S.
Редактировать:
Я изменил свой подход и попытался использовать CursorLoader, но все еще требуется много времени, чтобы выполнить запрос и заполнить мой список автозаполнения.
onCreate:
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 ().