4

私のアプリでは、サーバーからユーザーのプレイリストを取得ListViewし、データを感じます。問題は、クリックされたListView行が強調表示されないことです。ここで検索を使用しないという怒りのコメントを防ぐために、私が試したことは次のとおりです。

  • 行のボタンをフォーカス不可に設定する
  • コードと XML の両方で listSelector を設定します (同時にではありません)。
  • View渡されたの背景を変更しようとしていますOnItemClickListener
  • setItemsCanFocus() を bot true および false パラメータとともに使用する
  • 「選択」および「押された」状態の XML ドローアブルを行レイアウト ルートに設定する

を使用してテストしたため、クリックが検出されToastます。しかしListView、選択した行を強制​​的に強調表示することはできません

リストビュー

        <ListView
    android:id="@android:id/list"
    android:listSelector="@drawable/list_selected"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/etbg"
    android:choiceMode="singleChoice"
    android:divider="@color/div" >
</ListView>

リスト行として使用されるレイアウト

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
 >

<TextView
    android:id="@+id/tvListItemArtist"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="14dp"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Small Text"
    android:layout_toRightOf="@+id/tbListPlay"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#FFFFFF" />

<TextView
    android:id="@+id/tvListItemSong"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tvListItemArtist"
    android:layout_centerVertical="true"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@+id/tvListItemArtist"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Small Text"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#FFFFFF" />

<ImageView
    android:id="@+id/img_list_audio_saved"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="50dp"
    android:src="@drawable/attention"
    android:visibility="gone" />

<Button
    android:id="@+id/tbListPlay"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginBottom="8dp"
    android:layout_marginTop="8dp"
    android:background="@drawable/button_play"
    android:focusable="false"
    android:focusableInTouchMode="false" />

     </RelativeLayout>

助言がありますか?

4

3 に答える 3

2

ListSelector を変更しました:android:listSelector="@drawable/list_selected"カスタム ドローアブルは、状態が異なるセレクターではないと思います。使用法を理解するには、このサイトまたはこの質問を参照してください

于 2013-03-07T18:05:10.747 に答える
1

Hi I have already posted the answer for you in this question link android - identify items in a ListView, you said it hasn't worked for you, I have provided the same answer and it worked for other check this question Inflate ListView row from OnClickListener in Android?. I hope this will help you.

于 2013-03-07T18:12:06.827 に答える
1

drawables フォルダーにリスト ビューのセレクターを作成し、リスト アイテムの背景をこの drawable に設定します。以下のコードを参照してください

select_button_background.xml

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

    <item android:drawable="@drawable/select_button_selectable" android:state_pressed="false"/>
    <item android:drawable="@drawable/select_button_selectable" android:state_selected="false"/>
 </selector>

select_button_selectable.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="270"
        android:endColor="#CCCCCC"
        android:startColor="#DDDDDD"
        android:type="linear" />

    <corners android:radius="10dp" />

    <shape>
        <stroke
            android:width="1dp"
            android:color="#333333" />
    </shape>

</shape>

select_button_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <gradient
        android:angle="270"
        android:endColor="#AAAAAA"
        android:startColor="#BBBBBB"
        android:type="linear" />

    <corners android:radius="10dp" />

    <shape>
        <stroke
            android:width="1dp"
            android:color="#333333" />
    </shape>

</shape>
于 2013-03-07T18:06:00.107 に答える