5

我在我的Android应用程序中使用了一个ExpandableListView,如果用户在组元素上单击很长时间,想要执行某个操作,所以我在延伸中定义了一个OnLongClickListener。听者的工作原理如下,但子元素不再扩展。有任何想法吗?Android ExpandableListView长组点击侦听器阻止展开

public class ConnectionAdapter extends BaseExpandableListAdapter { 
    ... 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 
     // convertView is a LinearLayout 
     convertView.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       // my action here 
       return true; 
      } 
     }); 
    } 
    ... 
} 

回答

1

您的代码没有进一步处理任何其他'onClick'事件的原因是因为您在返回时传递'true'。如果您指出处理了事件,则操作系统将停止尝试进一步处理任何其他事件。要让它处理这个事件,并且展开,那么你需要将返回值更改为false而不是true

+3

我试图返回false。但同样的问题也存在于我身上。在实现onLongClicklistener for convertview后,该组不会展开 – 2013-09-24 08:43:55

+0

我遇到同样的问题,只要我在我的组项目上实现了长时间点击侦听器,短按(扩展组)就停止工作......任何帮助表示赞赏。 – 2014-09-04 03:18:09

4

您可以在expandablelistview上设置setOnItemLongClickListener。 ExpandableListView.PACKED_POSITION_TYPE_GROUP是组的ID,将其更改为 ExpandableListView.PACKED_POSITION_TYPE_CHILD,您可以使用组子对象的长按操作。

类似的东西:

pager_income = (ExpandableListView) findViewById(R.id.income_scroll); 

    pager_income.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // Your code with group long click 

       return true; 
      } 

      return false; 
     } 
    });