我知道有一些話題討論這種行爲,但我沒有看到有我可以使用的解決方案。ListView與BaseAdapter沒有響應OnLongClickListener
問題是以下,我有一個列表視圖,它使用實現OnLongClickListener的BaseAdapter。在GetView方法中,我將每個視圖的onLongClickListener設置爲這個 - 但是長按不會被捕獲。另外,我將onClickListener中的每個項目設置爲實現OnClickListener的不同項目,並且它確實捕獲了click事件,當我嘗試使用longClick事件做同樣的事情時,它仍未捕獲到長按事件。
一點代碼:
public class ListOfCustomersAdapter extends BaseAdapter implements OnLongClickListener
{
...
public View getView(int position, final View convertView, ViewGroup parent) {
vi.setOnClickListener(item); // works
vi.setOnLongClickListener(this); // doesn't works
}
}
的項目是實現OnClickListener
EDIT 1類的一個實例:
視圖VI是含有若干意見的FrameLayout:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_item"
android:descendantFocusability="blocksDescendants" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<include
android:id="@+id/details_container"
layout="@layout/list_message_my_details"
android:paddingRight="6dp" />
<include
android:id="@+id/details_container"
layout="@layout/list_message_responder_details" />
<LinearLayout
android:id="@+id/text_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/list_message_margin_left"
android:layout_marginRight="@dimen/list_message_margin_right"
android:orientation="vertical"
android:paddingTop="55dp" >
<TextView
android:id="@+id/message_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/white"
android:paddingBottom="@dimen/message_with_attached_channel_item_bottom_minus_padding"
android:paddingTop="@dimen/message_with_attached_channel_item_bottom_minus_padding"
android:textColor="@color/mobli_dark" />
<FrameLayout
android:id="@+id/text_seperator"
android:layout_width="fill_parent"
android:layout_height="1px"
android:background="@color/mobli_dark_20"
android:visibility="gone" >
</FrameLayout>
</LinearLayout>
</FrameLayout>
編輯2:
公共查看getView(INT位置,最後查看convertView,ViewGroup以及母公司){
View vi = convertView;
ItemType item = items.get(position);
if (item.getType() == null)
vi = new TextItemType(context, item);
else if (item.getType() == 1)
vi = new ColorItemType(context, item);
else if (item.getType() == 2)
vi = new BoldItemType(context, item);
else if (item.getType() == 3)
vi = new FlatItemType(context, item);
vi.setTag(item.getId());
vi.setOnLongClickListener(this); //doesn't work
vi.setOnClickListener(item); // work
return vi;
}
他與我的主要巨大的活動相關聯,我不會在這裏趕上長時間的點擊事件 – Nativ
好吧!代碼中你的vi是什麼?它是convertView的一些組件嗎? – Safime
是的,我會編輯我的答案,以解釋什麼是vi – Nativ