フォルダーの形式でいくつかのアイテムを表示する水平の 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,...,7
ListView
cursor.getPosition()
この状況から抜け出す方法はありますか?