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 –