无法在expandableListView中正确管理OntouchEventListener

无法在expandableListView中正确管理OntouchEventListener,listview,ontouchlistener,onitemlongclicklistener,Listview,Ontouchlistener,Onitemlongclicklistener,我创建了可扩展列表并设置了gesturedetector,其作用类似于滑块(每次我在其上乱扔时,它都会显示和隐藏) 在这里,我告诉expanableList倾听我的放纵行为: expandableListView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) {

我创建了可扩展列表并设置了gesturedetector,其作用类似于滑块(每次我在其上乱扔时,它都会显示和隐藏)

在这里,我告诉expanableList倾听我的放纵行为:

expandableListView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            return gestureDetectorOfExpListView.onTouchEvent(motionEvent);

        }


    });enter code here
但当我尝试设置OnItemLongListener以在长时间接触ExpandableList的子级后实现逻辑时:

expandableListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
            if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
                int groupPosition = ExpandableListView.getPackedPositionGroup(id);
                int childPosition = ExpandableListView.getPackedPositionChild(id);

                Toast.makeText(activity,"group: "+groupPosition +" child:"+childPosition,5000).show();

                // Return true as we are handling the event.
                return true;
            }
            return false;
        }
    });
enter code here

..<代码>OnItemLongClickListener工作正常!请帮助我了解如何同时实现手势动作和
onlongtoucks
。感谢您的帮助。

因此我找到了一个优雅的解决方案:

xpandableListView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            return gestureDetectorOfExpListView.onTouchEvent(motionEvent) | expandableListView.onTouchEvent(motionEvent);

        }


    });enter code here
expandableListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
            if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
                int groupPosition = ExpandableListView.getPackedPositionGroup(id);
                int childPosition = ExpandableListView.getPackedPositionChild(id);

                Toast.makeText(activity,"group: "+groupPosition +" child:"+childPosition,5000).show();

                // Return true as we are handling the event.
                return true;
            }
            return false;
        }
    });
enter code here
OnTouchEvent to expandableListView which return return gestureDetectorOfExpListView.onTouchEvent(motionEvent); 
xpandableListView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            return gestureDetectorOfExpListView.onTouchEvent(motionEvent) | expandableListView.onTouchEvent(motionEvent);

        }


    });enter code here