自动滚动时使用RecycleView TouchListener

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动滚动时使用RecycleView TouchListener相关的知识,希望对你有一定的参考价值。

我尝试使用AutoScroll功能制作RecyclerView。现在工作正常。但是我想用AutoScroll来TouchEvent。这意味着如果用户未触摸,列表将自动滚动。如果用户触摸,列表就会跟随用户的手指移动。但是现在,如果用户触摸列表,列表就停止了,但是1秒钟后,即使仍然触摸手指,它也会再次移动。

这是我的代码。

recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() 

            @Override
            public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) 
                switch (e.getAction()) 
                    case MotionEvent.ACTION_DOWN:
                        isTouched = true;
                        return false;
                    case MotionEvent.ACTION_MOVE:
                        isTouched = true;
                        return false;
                    case MotionEvent.ACTION_UP:
                        isTouched = false;
                        return true;
                
                return super.onInterceptTouchEvent(rv, e);
            
        );

        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
            @Override
            public void onScrollStateChanged(final RecyclerView view, int scrollState) 
                Log.e("test", isTouched+"");
                if (!isTouched) 
                    //list is top
                    if (!recyclerView.canScrollVertically(-1)) 
                        listHandler.postDelayed(new Runnable() 
                            @Override
                            public void run() 
                                view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
                                GoingDown = true;
                            
                        , 1000);// 1 second delay
                        //list is bottom
                     else if (!recyclerView.canScrollVertically(1)) 
                        listHandler.postDelayed(new Runnable() 
                            @Override
                            public void run() 
                                view.smoothScrollToPosition(0);
                                GoingDown = false;
                            
                        , 1000);// 1 second delay
                        //list is middle
                     else 
                        if (GoingDown) 
                            listHandler.postDelayed(new Runnable() 
                                @Override
                                public void run() 
                                    view.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
                                    GoingDown = true;
                                
                            , 500);// 1 second delay
                         else 
                            listHandler.postDelayed(new Runnable() 
                                @Override
                                public void run() 
                                    view.smoothScrollToPosition(0);
                                    GoingDown = false;
                                
                            , 500);// 1 second delay
                        
                    
                
            
        );

为了正常工作,我应该解决什么?

p.s]对不起,我的英文简短。

我尝试使用AutoScroll功能制作RecyclerView。现在工作正常。但是我想用AutoScroll来TouchEvent。这意味着如果用户未触摸,列表将自动滚动。如果用户触摸,列表移动...

以上是关于自动滚动时使用RecycleView TouchListener的主要内容,如果未能解决你的问题,请参考以下文章

如何禁止recyclerview的滚动时间

滚动时获取 RecycleView 的中心可见项

在自定义视图中调用 onTouchEvent() 时防止 RecycleView 滚动

滚动时将更多数据加载到recycleview

RecycleView 如何在滚动时隐藏显示顶视图(不是工具栏)

RecycleView4种定位滚动方式演示