android监听网络调用2次,android – RecyclerView Infinite Scroll监听器被调用两次

博客作者在尝试为RecyclerView实现无限滚动功能时遇到一个问题,当滚动到底部时,loadMore()方法被调用两次。问题可能源于OnScrolled方法中条件判断的逻辑。作者已提供了一段自定义的InfiniteScroll监听器代码,并寻求解决方案。
摘要由CSDN通过智能技术生成

我有一个RecyclerView,我试图实现无限滚动功能.问题是,OnScrolled方法中if语句中的代码正在执行两次.继承我目前的代码:

public abstract class InfiniteScroll extends RecyclerView.OnScrollListener {

private LinearLayoutManager mLayoutManager;

private int prevIoUsTotal = 0;

private boolean loading = true;

private int visibleThreshold = 5;

int firstVisibleItem,visibleItemCount,totalItemCount;

private int current_page = 1;

public InfiniteScroll(LinearLayoutManager layoutManager) {

mLayoutManager = layoutManager;

}

@Override

public void onScrolled(RecyclerView recyclerView,int dx,int dy) {

visibleItemCount = recyclerView.getChildCount();

totalItemCount = mLayoutManager.getItemCount();

firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition();

if (loading) {

if (totalItemCount > prevIoUsTotal) {

loading = false;

prevIoUsTotal = totalItemCount;

}

}

if (!loading && (totalItemCount - visibleItemCount)

<= (firstVisibleItem + visibleThreshold)) {

// End has been reached

// Do something

current_page++;

Log.d("moreitems","why is this being called twice?");

loadMore(current_page);

loading = true;

}

}

public abstract void loadMore(int current_page);

}

这个代码是作为一个单独的SO问题的答案发布的,其他示例似乎功能类似,但我仍然得到loadMore()方法执行两次到达RecyclerView的底部,我不知道为什么.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值