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结算时,我想检查用户是否已向下滚动。