リストビューを使用するときに最も一般的な問題のいくつかを以下に示します。
1. 項目の背景色とクリック色を変更する方法
デフォルトでは、リストビューの項目の背景色は黒で、ユーザーがクリックすると黄色になります。カスタムの背景色に変更する必要がある場合、通常 3 つの方法があります:
1) listSelector を設定する
2) レイアウト ファイルに項目の背景を設定する
3) アダプターの getview に設定する
これら 3 つの方法は次のとおりです。項目のデフォルトの背景色とクリック色の変更については以下で個別に説明しますが、その前にセレクターを記述する必要があります。 drawableはカラーリソースまたは画像リソースとして設定できます。
<?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/light_blue"></item> <item android:state_pressed="false" android:drawable="@color/sgray"></item> </selector>
<ListView android:id="@+id/history_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#565C5D" android:dividerHeight="3dp" android:listSelector="@drawable/selector" android:cacheColorHint="@android:color/transparent"> </ListView>
のレイアウトファイルです 3)adapter
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/selector"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="历史记录" android:textColor="#ffffff" android:textSize="20sp" android:layout_centerInParent="true"> </TextView> </RelativeLayout>
のgetViewメソッドに設定する 以上です。リストビューの奇数行と偶数行を変更する必要がある場合、3 番目の方法が最も柔軟です。異なるセレクターに設定した場合は、3 番目の方法のみを使用できます。
2. ボタン、チェックボックス、その他のコントロールをクリックしても反応がありません。 listitem にボタンやチェックボックスなどのコントロールが含まれている場合、listitem はデフォルトでフォーカスを失い、その結果、項目のイベントに応答できなくなります。最も一般的な解決策は、listitem のレイアウト ファイルに子孫Focusability 属性を設定することです。
if(convertView ==null) { convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null); } convertView.setBackgroundResource(R.drawable.selector);