我有一个扩展的 CursorAdapter 类,它使用我的 sqlite 数据库中的数据完成一个建议列表。到目前为止,使用 android 2.3 可以正常工作,但现在在 android 4.0.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);
}
游标加载器接口:
@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() 之间。