5

我有一個帶有自定義列表適配器的ListView。它有OnItemClickListener和OnItemLongClickListner,它曾經很好地工作。之後,我必須在列表項目的佈局中放置一個按鈕,並且項目點擊和長按聽衆停止工作。下面是我的示例代碼:當按鈕在列表中時,ListView長按不工作

ListView lv=(ListView)findViewbyId(R.id.listview); 
lv.setAdapter(listviewadapter); 
lv.setOnItemLongClickListener(new OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) { 
      // My code 
      } 
}); 

這用於列表項的佈局添加按鈕之前,做工精細:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="2dp" 
    > 
    <TextView 
     android:id="@+id/symbol_name" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2.5" 
     android:layout_gravity="left" 
     /> 
    <TextView 
     android:id="@+id/ltp" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_weight="1" 
     /> 
    <TextView 
     android:id="@+id/change_in_perc" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_weight="1" 
     /> 

    <TextView 
     android:id="@+id/volume" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_weight="1" 
     /> 

    <ImageButton 
     android:id="@+id/chart" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_weight="0.5" 
     android:src="@drawable/charts" 
     android:contentDescription="Chart Link" 
     /> 
</LinearLayout> 

我試圖改變在線聽衆對活動實施onItemLongClickListener,但沒有成功,直到現在。謝謝。

+0

這可能是這種情況。我正在嘗試。但是,如果這將是焦點,當我點擊列表視圖時,不應該觸發按鈕的點擊事件? – Sourabh

+2

This works ..請添加此作爲您的答案,以便我可以接受它。 – Sourabh

回答

13

當您點擊列表項目時,圖像按鈕可能會佔用焦點。

那麼增加這個

android:descendantFocusability="blocksDescendants" 

到您的根元素

http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:descendantFocusability

安卓descendantFocusability

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus. 

Must be one of the following constant values. 

Constant Value Description 
beforeDescendants 0 The ViewGroup will get focus before any of its descendants. 
afterDescendants 1 The ViewGroup will get focus only if none of its descendants want it. 
blocksDescendants 2 The ViewGroup will block its descendants from receiving focus. 
This corresponds to the global attribute resource symbol descendantFocusability. 
+1

非常感謝。只要stackoverflow允許,接受這個答案。 :) – Sourabh

+0

請幫幫我。我在過去的7個小時裏一直堅持這個,這是一個很簡單的問題。 http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 –

0

你是否在xml和listview.setLongClickable(true)中設置了android:longClickable =「true」;在代碼中?

+0

請幫幫我。我在過去的7個小時裏一直堅持這個,這是一個很簡單的問題。 http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 –