我正面臨着這個問題,它使我瘋狂。 我有以下的適配器代碼:當添加onClick監聽器來查看適配器內部時,ListView的listSelector樣式不起作用
private class ListAdaptor extends ArrayAdapter<String> {
private ArrayList<String> listVO;
public ListAdaptor(Context context, int textViewResourceId, ArrayList<String> items) {
super(context, textViewResourceId, items);
this.listVO = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = ViewGroup.inflate(getContext(), R.layout.list_friends_inflate, null);
}
String o = listVO.get(position);
TextView fullName = (TextView) v.findViewById(R.id.textViewName);
fullName.setText(o);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_SHORT);
}
});
/*v.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(getApplicationContext(), "test2", Toast.LENGTH_SHORT);
return false;
}
});*/
return v;
}
}
這個適配器類是一個ListActivity裏面。當我點擊listView的項目時,listSelector風格行爲不會發生。如果我評論onClickListener並點擊它,它就會起作用。如果我取消註釋onTouchListener並點擊該項目,它也可以工作,但我不想要一個onTouch事件,而是一個onClick。
我在適配器正在膨脹的視圖的XML是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" android:clickable="false" android:focusableInTouchMode="false">
<ImageView
android:id="@+id/imageView1"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:clickable="false" android:focusableInTouchMode="false"/>
<TextView
android:id="@+id/textViewName"
style="@style/TextViewStyleCommon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_marginBottom="18dp"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/imageView1"
android:textAppearance="?android:attr/textAppearanceMedium" android:clickable="false" android:focusableInTouchMode="false"/>
<TextView
android:id="@+id/textViewPoints"
style="@style/TextViewStyleCommon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textViewName"
android:layout_alignBottom="@+id/textViewName"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:clickable="false" android:focusableInTouchMode="false"/>
</RelativeLayout>
我知道,有一個與具有在你膨脹的XML可聚焦元素,使得onClick事件不工作問題。問題是,我的活動確實工作,但風格行爲不......這是瘋了。
在我styles.xml我:
<style name="MyTheme" parent="android:Theme.Light">
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/ndp_background</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:listViewStyle">@style/MyListView</item>
</style>
<style name="MyListView" parent="@android:style/Widget.ListView.White">
<item name="android:listSelector">@drawable/list_subject_selector</item>
<item name="android:cacheColorHint">@android:color/transparent</item>
</style>
我定義的MyTheme在Android清單應用程序的主題...
有沒有人見過這樣的行爲? 非常感謝, Felipe
爲什麼不使用'onListItemClick'而不是直接將OnClicklistener設置爲您的充氣視圖? – Luksprog 2012-04-29 12:16:13