我有一张位于SD卡中的视频列表。此时,我只需要帮助为列表视图中的每一行创建手势或滑动检测。感谢stackoverflow Fling gesture detection on grid layout上的这个问题,我在listview上实现了这个手势。现在,它可以轻松检测用户何时向右或向左滑动。但这个手势适用于整个列表视图。我只想知道如何为各行实现此滑动检测。例如,应用程序现在可以打印“右扫动”,“向左滑动”。我只是想让它像“在第1行右侧滑动”,“在第3行左侧滑动”等等。我希望我的问题很明确。
期待一些有用的回复。 感谢
答案 0 :(得分:4)
查看this answer并在onFling
活动中使用pointToPosition方法
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
Toast.makeText( listAdapter.getItem( listView.pointToPosition(Math.round(e1.getX()), Math.round(e1.getY())).toString());
return super.onFling();
} catch( Exception e ) {
// do nothing
}
}
答案 1 :(得分:1)
我在我的解决方案中使用了每项目方法 - 看看here 我的滑动检测代码可能与标准滑动检测有点不同,但它对我来说非常适合。我正在使用附加标签来获取项目相关数据。 希望有所帮助,但如果你确实有一些问题,请告诉我,我会尝试更详细地解释。
答案 2 :(得分:1)
根据Per My Opinion对项目使用布尔值,当触摸该项目时设置为true,使用onTouchListener,
ListItem.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
click=true;
return click;
}
});`
然后你可以覆盖这个:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
Log.v("Inside", "=====Dispatch Event===");
if(click){
Log.v("Inside", "=====Dispatch Event=T==");
click=false;
return gestureDetector.onTouchEvent(ev);
}else{
return false;
}
}
答案 3 :(得分:0)
答案 4 :(得分:0)
这个问题已经过时了,但是现在谢天谢地,Jake Wharton向我们提供了一些为ICS发布的代码;这应该允许您滑动各行:https://github.com/JakeWharton/SwipeToDismissNOA
答案 5 :(得分:0)
我们在每行实施了滑动检测功能,以便在此处显示操作并解除项目https://github.com/47deg/android-swipelistview。我希望它有所帮助