Android ExpandableListView长组点击监听器阻止扩展

时间:2012-02-23 21:42:11

标签: android expandablelistview expand clickable expandablelistadapter

我在Android应用程序中使用ExpandableListView,如果用户在组元素上单击了很长时间,则想要执行操作,因此我在OnLongClickListener扩展中定义了BaseExpandableListAdapter。侦听器按预期工作,但子元素不再扩展。有什么想法吗?

 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;
            }
        });
     }
     ...   
 }

2 个答案:

答案 0 :(得分:4)

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

类似的东西:

    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;
        }
    });

答案 1 :(得分:1)

您的代码没有进一步处理任何其他“onClick”事件的原因是因为您在返回时传递了“true”。如果您指示已处理事件,则操作系统将停止尝试进一步处理任何其他事件。要让它处理此事件并进行扩展,那么您需要将return更改为false而不是true