3

ListView に問題があります。選択したアイテムを選択したときに、選択したアイテムの背景を自分が持っているカスタム ドローアブルに変更したいのですが、うまくいきません。

画像のようにこの効果を選択したアイテムにしたい

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" 
          android:drawable="@drawable/selected_item"/>
    <item android:drawable="@android:color/transparent" />
</selector>

これは list_row のテキストです

<!-- this layout is used to view row of category list and resturant list  -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/txt_category_row" 
    android:gravity="center"
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK"
    android:layout_height="55dp" 
    android:padding="10dp"
    android:text="@string/hello" 
    android:layout_marginTop="5dp"

    android:textAppearance="?android:attr/textAppearanceLarge" />

そして、これは ListViewcode.xmlです:

<ListView android:id="@+id/list_category" 
    android:layout_alignParentLeft="true" 
    android:layout_height="fill_parent" 
    android:layout_width="184dp" 
    android:dividerHeight="2px"
    android:background="@android:color/transparent"
    android:cacheColorHint="@android:color/transparent"
    android:layout_marginTop="5dp"  
    android:listSelector="@drawable/list_selector"
    android:divider="@color/Gray"  >
4

3 に答える 3

10

タッチモードでは、選択またはフォーカスされた状態はありません。

ただし、(チェックボックスがなくても)チェックされた状態を設定し、それを使用して「選択」時にプロパティを変更することができます。リストを表示するように設定したJavaコードで、リストビューを定義した後に次の行を追加します。

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

次に、状態リストXMLで次のように変更します。

android:state_selected="true"

これに:

android:state_activated="true"

だから今あなたは持っているべきです:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true"  
        android:drawable="@drawable/selected_item"/> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

最後に、行ビューの背景をセレクターファイルを指すように設定します。

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row"  
    android:gravity="center" 
    android:layout_width="match_parent"  
    android:textColor="@color/BLACK" 
    android:layout_height="55dp"  
    android:padding="10dp" 
    android:text="@string/hello"  
    android:layout_marginTop="5dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:background="@drawable/item_selector" /> 

状態リストXMLに名前を付けなかったので、「item_selector」を使用しました。そのファイルの名前が実際に何であれ、それを置き換える必要があります。

于 2012-04-11T15:03:19.943 に答える
1

CheckableFrameLayout をリスト アイテム ビューとして使用する必要があります。ここで見つけることができます - CheckableFrameLayout

リスト項目をクリックすると、背景のドローアブルが必要なものに変更されることがわかります。

于 2012-06-12T10:21:22.827 に答える
-2
dynamicListView.setOnItemClickListener(new OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
       //arg1 will give you that view   
       arg1.setBackgroundColor(Color.BLUE); 
    }
});
于 2012-04-11T13:37:26.113 に答える