0

フォルダーの形式でいくつかのアイテムを表示する水平の ListView があります。これらの項目をクリックすると、そのノードの子が開きます。選択したノードの背景を設定したい。Adapter クラスの次のコードでこれを行うことができます。

public void bindView(View view, Context context, Cursor cursor) {
    this.cursorPosition = cursor.getPosition();
    if (this.cursorPosition == selectedPosition) {
        holder.title.setBackgroundResource(R.color.toc_selected);
    }
}

selectedPositionこれが選択したアイテムの位置です。別の場所に設定しています。

アイテムをクリックした後にアイテムを左右にスワイプすると、このコードは失敗します。一度にasListViewの値を持つ 8 つのアイテムが表示されます。スワイプすると、9 番目の要素の値は0 になり、10 番目の要素の値は 1 になります。したがって、最初のノードを選択すると、リスト ビューで 1 番目と 9 番目のノードが選択されます。ビューをスワイプすると、位置が更新されます。また、9 番目のアイテムを選択すると、1 番目と 9 番目のノードの getPosition が同じ、つまり 0 であるため、1 番目のアイテムも選択されます。cursor.getPosition()0,1,2,...,7ListViewcursor.getPosition()

この状況から抜け出す方法はありますか?

4

0 に答える 0