【问题标题】:Swipe detection for each row of listview列表视图每一行的滑动检测
【发布时间】:2011-09-29 16:26:51
【问题描述】:

我有一个位于 SD 卡中的视频列表。此时,我只需要帮助为列表视图中的每一行创建手势或滑动检测。感谢 stackoverflow Fling gesture detection on grid layout 上的这个问题,我在列表视图上实现了手势。它现在可以轻松检测用户何时向右或向左滑动。但是这个手势是针对整个列表视图的。我只想知道如何为各个行实现这种滑动检测。例如,应用程序现在制作一个打印“Right Swipe”、“Left Swipe”的 toast。我只想让它像“在第 1 行向右滑动”、“在第 3 行向左滑动”等。我希望我的问题很清楚。

期待一些有用的回复。 谢谢

【问题讨论】:

标签: android listview gesture swipe


【解决方案1】:

查看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
    }
}

【讨论】:

    【解决方案2】:

    我在我的解决方案中使用逐项方法 - 看看 here 我的滑动检测代码可能与标准滑动检测有点不同,但它对我来说非常有效。我正在使用附加的标签来获取与项目相关的数据。 希望对您有所帮助,但如果您确实有一些问题,请告诉我,我会尝试更详细地解释。

    【讨论】:

      【解决方案3】:

      根据我的意见是对项目使用布尔值,当该项目被触摸时设置为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;
      }
      
      }
      

      【讨论】:

        【解决方案4】:

        我认为您正在寻找的是 SwipeView(甚至可能是 ViewFlow),而不是标准的 Android 手势检测。

        【讨论】:

        • SwipeView 或 ViewFlow 最适合用于我们有不同视图的情况。我有一个列表视图,其中多个项目出现在同一页面上。我只想为每一行获得滑动手势。还有其他建议吗??
        【解决方案5】:

        这个问题很老了,但谢天谢地,Jake Wharton 将一些为 ICS 发布的代码向后移植到这里;这应该允许您滑动单个行:https://github.com/JakeWharton/SwipeToDismissNOA

        【讨论】:

          【解决方案6】:

          我们在https://github.com/47deg/android-swipelistview 处实施了每行滑动检测以显示操作和关闭项目。希望对你有帮助

          【讨论】:

            猜你喜欢
            • 2018-10-06
            • 2018-12-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多