3

私の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() の間にあります。

4

1 に答える 1

1

SimpleCursorAdapter同じ理由で廃止されました。Googleでは、速度を上げるためCursorLoaderに の代わりに使用することをお勧めしています。も良い考えです。SimpleCursorAdapterArrayAdapter

http://developer.android.com/reference/android/content/CursorLoader.html

于 2012-04-02T07:43:50.233 に答える