Android RecyclerView OnScrollStateChanged()和onScrolled()的

Android RecyclerView OnScrollStateChanged()和onScrolled()的,android,android-recyclerview,Android,Android Recyclerview,我的问题是,我们可以从onScrollStateChanged()方法调用RecyclerView的onScrolled()方法吗。原因是我想检查两个条件。如果SCROLL\u STATE\u为真,则检查用户是否已向下滚动。有没有其他方法来检查这两个问题 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollState

我的问题是,我们可以从
onScrollStateChanged()
方法调用
RecyclerView
onScrolled()
方法吗。原因是我想检查两个条件。如果
SCROLL\u STATE\u
为真,则检查用户是否已向下滚动。有没有其他方法来检查这两个问题

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);

            if (newState == RecyclerView.SCROLL_STATE_SETTLING) {

              // Now I have to check if the user has scrolled down or up.  

            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);


        }
    });
这就是你想要的吗

onScrolled
方法中,您可以通过检查
dy
是否小于0来设置布尔标志“isScrolledDown”,以知道用户已向下滚动。然后,每当滚动状态为“滚动状态”和“滚动向下”时,执行所需的操作

recyclerView.addOnScrollListener(新的recyclerView.OnScrollListener(){
私有布尔值isScrolledDown=false;
@凌驾
CrollStateChanged上的公共无效(RecyclerView RecyclerView,int newState){
super.onScrollStateChanged(recyclerView、newState);
if(newState==RecyclerView.SCROLL\u STATE\u结算&iscrolleddown){
//做点什么。。。
}
}
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
isScrolledDown=dy<0;
}
});

您可以从在侦听器外部声明这两个变量开始

//chose appropriate initial values
  var updatedRange = Range(...) 
  var lastVisibilityRange = Range(...)
然后在侦听器回调中,您将有如下内容:

override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                    super.onScrolled(recyclerView, dx, dy)

                    val first = manager.findFirstVisibleItemPosition()
                    val last = manager.findLastVisibleItemPosition()
                    lastVisibilityRange = updatedRange
                    updatedRange = Range(first , last)

                    //or you can even call this section in onScrollStateChanged 
                    if (updatedRange.lower <= lastVisibilityRange.lower) {
                        //has scrolled up
                    } else {
                        //has scrolled down
                    }

                }

override-fun-onScrolled(recyclerView:recyclerView,dx:Int,dy:Int){
super.onScrolled(回收视图、dx、dy)
val first=manager.findFirstVisibleItemPosition()
val last=manager.findLastVisibleItemPosition()
lastVisibilityRange=updatedRange
UpdateRange=范围(第一个、最后一个)
//或者您甚至可以在onScrollStateChanged中调用此部分

如果(updatedRange.lower)您试图实现的任何目标都可以在onscrillstatechanged中完成。请提供更多详细信息,以便我可以告诉您如何完成。当newState==RecyclerView.SCROLL\u STATE\u结算时,我想检查用户是否已向下滚动。