如何在刷卡后在ViewPager中获取页面索引?

时间:2014-04-10 15:55:23

标签: java android android-viewpager swipe ontouchlistener

我有一个问题,即我有一个viewpager,我已经为TouchListener制作了一个GestureDetector来检测滑动..
当用户向右或向左滑动时,我会根据它的索引递增或递减一个具有每个图像键的数组,以便我可以检查此图片之前是否被收藏或是否可以下载它。用户向左或向右平滑滑动时效果很好,但问题是当用户快速刷几次增量并减少结果不正确的索引时,我怎么能处理这样的问题,有什么想法?

这是扩展SimpleOnGestureListener的代码:

      @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        boolean result = false;
        try {
            float diffY = e2.getY() - e1.getY();
            float diffX = e2.getX() - e1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }

这是向右滑动时的代码,在向左滑动时相同,除了它增加" pagerPosition"没有减少:

            public void onSwipeRight() {
                pagerPosition--;

               boolean isFavorites = db.checkfavorites(imageUrls[pagerPosition]);
               if(isFavorites){
                      fave.setVisible(true);
                      unfave.setVisible(false);
               }else{
                      fave.setVisible(false);
                      unfave.setVisible(true);     
               }

1 个答案:

答案 0 :(得分:3)

如果您使用的是ViewPager,为什么不使用OnPageChangeListener它会为您提供当前页面的位置,您可以根据该位置执行计算。