1

Androidアプリケーションにリストがあります。リスト アイテムはカスタム オブジェクトであり、カスタム オブジェクトのプロパティに応じて、リスト アイテムの色が決定されます。

問題は、そのようなリストのアイテムを選択すると、リストセレクターが表示されないことです。

この問題を解決するにはどうすればよいですか? リスト項目の色を設定するには、アダプタで次のメソッドを使用しています。

convertView.setBackgroundColor(Color.LTGRAY)

これは色を設定する正しい方法ですか?そうでない場合は、他に何を使用できますか。

前もって感謝します。

スワプニル・ダラル

4

3 に答える 3

1

これは、次の 2 つの方法で修正できます。

1.押された状態で背景を透明にするアイテムビューのセレクターを記述し、そのセレクターをアイテムビューの背景として設定します。

<item android:state_enabled="true"
      android:state_pressed="false"
      android:drawable="@color/gray" />

<item android:state_enabled="true" 
      android:state_pressed="true"
      android:drawable="@color/transparent" />

2.listselector を削除し、別の状態で必要な色で itemview のセレクターを作成し、itemview の背景として設定するだけです。

于 2012-10-30T15:15:55.847 に答える
0

私はこの質問の解決策を得ました、

アプリケーション内のさまざまなオブジェクトに対してさまざまな xml ファイルを作成しました。したがって、アダプタの getView では、条件に応じていずれかの xml をロードできます。

例:

`if(true) {
    convertView.setBackgroundResource(R.drawable.firstxml);
 }
 else {
    convertView.setBackgroundResource(R.drawable.secondxml);
 }`

これらの xml では、必要に応じて色を指定できます。

例:

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

ありがとう、

スワプニル・ダラル

于 2012-11-05T05:58:18.263 に答える
0

getView メソッド コードを追加して、より適切なサポートを提供できるようにしてください。よくある間違いの 1 つは、異なるレイアウト リスト Item をロードするために、リスト ビュー内の各アイテムに対して常に新しいビューを作成するとは限らないことです。

たとえば、同一の項目リストに対する一般的なアプローチ:

if(view == null)
{
    vi = inflater.inflate(R.layout.fb_list_row, parent, false);
}

異なるオブジェクトのリストビュー項目については、次のような if ステートメントを削除する必要があります。

vi = inflater.inflate(R.layout.fb_list_row, parent, false);

次に、各リスト項目の変更を行います..

これが役立つことを願っています。それ以外の場合は、さらにコードを追加します。

于 2012-10-30T13:02:58.673 に答える