我有問題定義與自定義適配器和列表項xml佈局的ListView。問題是我的ListView在按下時沒有突出顯示項目。我做了以下內容:如何爲所選列表項目設置背景樣式?
我定義的可繪製選擇XML資源文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@android:color/holo_orange_light" />
<item android:state_pressed="false" android:drawable="@android:color/white" />
</selector>
我定義一個項目佈局的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/btn_voice_item"
>
<ImageButton
android:id="@+id/voiceItemFavorite"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:background="@drawable/btn_favorite" />
<TextView
android:id="@+id/voiceItemText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:layout_toRightOf="@+id/voiceItemFavorite"
android:background="@drawable/btn_voice_item" />
</RelativeLayout>
最後,我在我的自定義數據適配器編寫代碼膨脹並填充視圖。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = context.getLayoutInflater();
convertView = inflater.inflate(R.layout.voice_item, null);
}
VoiceItem i = getItem(position);
TextView t = (TextView) convertView.findViewById(R.id.voiceItemText);
t.setText(i.toString());
ImageButton b = (ImageButton) convertView.findViewById(R.id.voiceItemFavorite);
b.setTag(i);
b.setSelected(i.favorite);
b.setOnClickListener(new FavoriteClick());
return convertView;
}
除了當我按下列表中的項目時沒有視覺指示新聞出版物,一切都有效。我期望按下的項目背景的顏色轉換爲由我的可繪製選擇器定義的樣式。
我怎樣纔能有一個自定義的查看項目,並保持按下時項目的樣式突出顯示?
謝謝西里爾。實際上,我在閱讀您的博客文章之前回答了您的演示,並幫助我解決了我的問題。 – sysrpl 2012-08-14 01:38:32
不客氣,但這不是我的博客:) – 2012-08-14 01:41:48