そのため、カーソルを介して動的に更新されるリストビューを含むアクティビティが 1 つあります。カーソル オブジェクトは、クエリ コマンドをこの変数に再割り当てするだけで再利用され、まったく新しいデータ セットが返されます。これはうまくいきます。問題は、SimpleCursorAdapter を AlphaIndexer で動作するように拡張したことです。どうやらカーソルが更新または変更されると、インデックス付きキャッシュがクリアされるはずです。これは起こっていません。このすべての主な理由は、渡されたさまざまなカーソルで高速スクロールを機能させ、それを機能させることです。現在、異なるカーソルを使用して、リストビューは最初のリストビューのインデックスを使用し、2 番目のリストビューを高速スクロールしようとしています。
class AlphaCursor extends SimpleCursorAdapter implements SectionIndexer {
AlphabetIndexer alphaIndexer;
private int list_type;
public AlphaCursor(Context context, int layout, Cursor c, String[] from, int[] to, int type, String sortBy) {
super(context, layout, c, from, to);
// MUST have space in front of alphabet
int count = c.getCount();
// this.onContentChanged();doesnt do a thing
alphaIndexer = new AlphabetIndexer(c, c.getColumnIndex(sortBy), " ABCDEFGHIJKLMNOPQRSTUVWXYZ");
list_type = type;
何が起こっているのか、またはこのキャッシュをクリアする方法はありますか? onChanged() と onContentChanged() を試しました。誰かがこれを見たことがありますか、または何か提案を知っていますか?
コードは次のように使用されています。
alpha = new AlphaCursor(ClassActivity.this, R.layout.list_item, m_cursor, from, to, TAB_HOME, "name");
alpha.changeCursor(m_cursor);
mList.setAdapter(alpha);
カーソルを再クエリして新しい AlphaIndexer を作成するだけの 4 つの「タブ」があることに注意してください。タブがクリックされるたびに、アルファ変数が無効になります。インデクサーでビューキャッシュが行われているようです。
ありがとう