6

私はアンドロイドリストビューを持っています。リストビュー項目をクリックしたときにリストビュー項目の背景を変更したい。

そして、前に選択したアイテムをデフォルトの背景に戻す必要があります。これは、1 つの項目のみを選択する必要があることを意味します。

私は長い間それを探してきました。onItemClick() を使用して、選択したアイテムの背景を変更できます

しかし、以前に選択したアイテムを変更することはできません。たとえば、2 番目の項目を選択すると、変更されました。そして、3番目のアイテムを選択します。何てことだ!それも変わった!これのために私は何ができますか。どうすれば以前の位置を取得できますか?

ここに私のアンドロイドコードがあります。

private class ListViewItemClickListener implements
            AdapterView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            TextView title = (TextView) view.findViewById(R.id.title);
            title.setBackgroundResource(R.drawable.list_shape);

        }
    }
4

3 に答える 3

4

リストビューでアイテムを選択する組み込みのメソッドを使用する必要があります。背景を手動で変更すると、エラーが発生しやすくなります。

この属性をリストビュー アイテム xml のルート ビューに追加します。

android:background="?android:attr/activatedBackgroundIndicator"

次に、ListView を呼び出しsetItemChecked(x, true)ます。x は、選択する項目の位置です。

ChoiceModeリストビューに選択を許可するセット (「SingleChoice」など)があることを確認します。

于 2013-11-13T12:16:38.170 に答える
1

以下のように、クリックするとListViewアイテムの色を変更できます。次の手順を実行します。

(覚えておいてください、これはカスタム リスト ビュー用です)

  1. 以下のように、Drawable フォルダーに XML ファイルを作成します。

    <item android:drawable="@color/orange" android:state_focused="true"/>
    <item android:drawable="@color/orange" android:state_pressed="true"/>
    <item android:drawable="@drawable/listview"></item>
    

    独自のリソースを選択します。

  2. カスタム ListView を実装する際に、カスタム リスト アイテムのデザイン用に追加のレイアウトを使用できます。以下はそのような例です。

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="60dp"
        android:layout_height="60dp" />
    
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:layout_toRightOf="@+id/imageView1"
        android:background="@drawable/listselect_picture"
        android:gravity="center"
        android:text="TextView"
        android:textColor="@drawable/select_txtcolor"
        android:textSize="16sp" />
    

上記のコードでは、ステップ 1 の XML ファイルを「背景」属性として設定しました。これはあなたが望むように動作します。

さらに、ListItem の選択時にテキストの色も変更する場合は、以下の XML コードを使用して、その XML ファイルを "TextColor" 属性として設定します。

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

    <item android:state_selected="true" android:color="@android:color/white"/>
    <item android:state_focused="true" android:color="@android:color/white"/>
    <item android:state_pressed="true" android:color="@android:color/white"/>
    <item android:color="@android:color/black"/>

</selector>

上記のコードは、選択時にテキストの色を に変更し、クリックしないと元に戻します。

于 2013-11-13T12:45:07.283 に答える