5

ExpandableListView在我的 Android 应用程序中使用 a ,如果用户长时间单击 group 元素,我想执行一个操作,所以我OnLongClickListener在我的BaseExpandableListAdapter扩展中定义了 a 。侦听器按方面工作,但子元素不再扩展。有任何想法吗?

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

2 回答 2

4

您可以在可展开列表视图上设置 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;
        }
    });
于 2013-11-20T20:27:30.283 回答
1

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

于 2012-03-19T00:37:30.943 回答