我有一个可扩展 ListView 。我正在执行删除每个项目的向左滑动的 listItem。
我正在使用自定义适配器来填充 ListView 项。
public class InsightsListAdapter extends BaseExpandableListAdapter {
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View row = convertView;
row = inflater_.inflate(R.layout.insight_list_item, null);
final GestureDetector gdt = new GestureDetector(new GestureListener());
row.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
swipedViewPosition_=groupPosition;
swipedView_=v;
gdt.onTouchEvent(event);
return true;
}
});
return row;
}
我正在使用如下的 GestureListener
private static final int SWIPE_MIN_DISTANCE = 200;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private class GestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
System.out.println("Left swiped--------");
removeListItem();
return false; // Right to left
}
return false;
}
}
因为它是一个可扩展 ListView ,所以我在 Activity 中实现了一些点击功能
insightList_.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
System.out.println("Group clicked---------");
showClear(true);
selectedItem_ = null;
return false;
}
});
但现在 OnFling 正在被调用。但不是 OnGroupClick()
当我从适配器的 onTouch 事件函数返回 false 时,会调用 OnGroupClick 但不会调用 OnFling()。
要么 Fling 会起作用,要么 OnGroupClick 起作用,但不能同时起作用。
最佳答案
在行的ontouch事件上
row.setOnTouchListener(new OnTouchListener() {[..]
你返回true,那么之后就不会再调用touch事件了,改成return false,touch事件就会折叠到下一个child view。
关于android - Onfling 和 OnTouch 不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20703985/