代码之家  ›  专栏  ›  技术社区  ›  AIK

RecyclerView项目滑动更新背景文本视图

  •  2
  • AIK  · 技术社区  · 7 年前

    我有一个问题,我被困在这一点上。我在recyclerview的每个项目上使用了recyclerview滑动。我需要做的是用1、2等更新textview,因为滑动正在向右移动,就像这样。 image of recyclerview

    我得到了事件的x轴值。getRaw(x)和我需要随着x值从左向右增加而增加数量,如果滑动从右向左移动,则减少计数。这是我的密码。

    holder.swipeLayout.setOnTouchListener(new View.OnTouchListener() {
    
                int downX, upX, initialX = 0, rightX;
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
    
                    switch (event.getAction()) {
    
                        case MotionEvent.ACTION_DOWN:
                            startX = event.getRawX();
                            startY = event.getRawY();
                            break;
    
                        case MotionEvent.ACTION_MOVE:
                            float x = event.getRawX();
    
                            float y = event.getRawY();
                            // Calculate move update. This will happen many times
                            // during the course of a single movement gesture.
    
                            scrollByX = x - startX; // move update x increment
                            scrollByY = y - startY; // move update y increment
    
                            startX = x; // reset initial values to latest
                            startY = y;
    
                            if (scrollByX >= 100 && scrollByX < 150)
                                holder.leftTextView.setText("1");
                            if (scrollByX >= 150 && scrollByX < 200)
                                holder.leftTextView.setText("2");
                            if (scrollByX >= 200 && scrollByX < 250)
                                holder.leftTextView.setText("3");
                            if (scrollByX >= 250 && scrollByX < 300)
                                holder.leftTextView.setText("4");
                            if (scrollByX >= 350 && scrollByX < 400)
                                holder.leftTextView.setText("5");
    
                            break;
    
                        case MotionEvent.ACTION_UP:
                            upX = (int) event.getX();
                            Log.i("event.getX()", " upX " + downX);
                            holder.swipeLayout.animateReset();
                            //holder.leftTextView.setText("0");
                            scrollByX = 0;
                            scrollByY = 0;
                            if (upX - downX > 100) {
    
                                // swipe right
                            }
    
                            else if (downX - upX > -100) {
    
                                // swipe left
                            }
                            break;
    
                    }
    
                    return false;
                }
    
    
            });
    

    每次我滑动这些项目时,有时显示1,有时显示5,这意味着它的行为不正常。谁能帮我渡过难关吗。谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   M Daim Khan    6 年前

    尝试在中更新textView onTouchEvent() case MotionEvent.ACTION_MOVE