0

私は ListFrament を使用しており、選択した行を強調表示したいと考えています。

私のセレクター:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item 
    android:state_pressed="true"
    android:drawable="@color/gold" />
  <item
    android:state_selected="true"
    android:drawable="@color/plum" />
  <item 
    android:drawable="@color/medium_green" />
</selector>

私の ListFragment: のコード onCreateActivity:

this.getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

クリック時:

@Override
public void onListItemClick(ListView list, View v, int position, long id) {
    super.onListItemClick(list, v, position, id);
    String tag = this.getTag();
    Log.d(TAG, "id, position " + id + " " + position);
    list.setSelection(position);
}

残念ながら、これは機能しません-行をクリックすると「金」のみが点滅します...選択した行が強調表示されたままになるようにします...

ご回答ありがとうございます。

4

1 に答える 1

2

これを試して

行タイプのグローバル変数を設定します。ジェネリックなのでビューを取っています

View previous;

onCreateView でビューを初期化する

previous=new View(getContext);

そして、onListItemClickがこのようにするとき

public void onListItemClick(ListView list, View v, int position, long id) {
    super.onListItemClick(list, v, position, id);
    String tag = this.getTag();
    Log.d(TAG, "id, position " + id + " " + position);
   previous.setSelected(false);
   v.setSeleted(true);
   previous=v;
}

これを試して、古いアプリでこれを使用したことに戻ります...確実に機能します..これが役立つことを願っています.

于 2013-02-27T15:34:04.097 に答える