我有一个扩展的CursorAdapter类,它使用我的sqlite数据库中的数据完成建议列表。到目前为止用android 2.3工作得很好,但现在在android 4.0.1中感觉很慢。另外,其次是建议列表滚动速度也很慢。冰淇淋三明治中的CursorAdapter有任何已知问题吗?在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-men30秒)获取数据,但是自动完成Textview中的列表没有出现。
延迟介于onCreateLoader(异步返回CursorLoader)和onLoadFinished()之间。
答案 0 :(得分:1)
SimpleCursorAdapter
已被弃用。 Google建议使用CursorLoader
代替SimpleCursorAdapter
以提高速度。 ArrayAdapter
也是一个好主意。
http://developer.android.com/reference/android/content/CursorLoader.html