gpt4 book ai didi

android - 如何检测用户何时滚动到 RecyclerView 中的最顶部项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:59 25 4
gpt4 key购买 nike

我试过写下面的代码

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if(dy > 0){
//scrolling up
} else {
//scrolling down
int pastVisibleItems = linearLayoutManager.findFirstVisibleItemPosition();
if (pastVisibleItems == 0) {
Toast.makeText(getContext(),"Top most item",Toast.LENGTH_SHORT).show();
}
}
}

但它不起作用。我也尝试过使用 android 的 SwipeRefreshLayout 来执行此操作,因为它可以执行我想要的操作,它能够检测用户何时滚动到最上面的项目。我决定不使用它,因为我似乎无法阻止加载指示器弹出(我根本不想看到加载指示器弹出)。

所以,基本上我想做的是:

  1. 检查用户滚动
  2. 它已经是最上面的项目了吗?
  3. 如果是,执行某事,如果否,则什么都不做

知道如何实现吗?

谢谢。

最佳答案

我自己解决了我的问题。我改用下面的代码

private boolean isUserScrolling = false;
private boolean isListGoingUp = true;

然后在RecyclerView的OnScrollListener

@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//detect is the topmost item visible and is user scrolling? if true then only execute
if(newState == RecyclerView.SCROLL_STATE_DRAGGING){
isUserScrolling = true;
if(isListGoingUp){
//my recycler view is actually inverted so I have to write this condition instead
if(linearLayoutManager.findLastCompletelyVisibleItemPosition() + 1 == list.size()){
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(isListGoingUp) {
if (linearLayoutManager.findLastCompletelyVisibleItemPosition() + 1 == list.size()) {
Toast.makeText(getContext(),"exeute something", Toast.LENGTH_SHORT).show();
}
}
}
},50);
//waiting for 50ms because when scrolling down from top, the variable isListGoingUp is still true until the onScrolled method is executed
}
}
}
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if(isUserScrolling){
if(dy > 0){
//means user finger is moving up but the list is going down
isListGoingUp = false;
}
else{
//means user finger is moving down but the list is going up
isListGoingUp = true;
}
}
}

关于android - 如何检测用户何时滚动到 RecyclerView 中的最顶部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41847534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com