使用findLastCompletelyVisibleItemPosition()实现上滑加载新数据

页面加载相关代码:

recyclerView.addOnScrollListener(new OnLoadMoreListener() {
	@Override
    public void onLoadMore() {
		if (canLoadMore) {
			canLoadMore = false;  //
			presenter.doLoadMoreData(); //加载数据并显示
		}
	}
});

监听器:

public abstract class OnLoadMoreListener extends RecyclerView.OnScrollListener {
    private LinearLayoutManager layoutManager;
    private int itemCount, lastPosition, lastItemCount;
    public abstract void onLoadMore();

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
            layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            itemCount = layoutManager.getItemCount();
            lastPosition = layoutManager.findLastCompletelyVisibleItemPosition();
        } else {
            Log.e("OnLoadMoreListener", "The OnLoadMoreListener only support LinearLayoutManager");
            return;
        }

        if (lastItemCount != itemCount && lastPosition == itemCount - 1) {
         //lastItemCount 是为了防止加载数据后,位置仍然符合lastPosition == itemCount - 1,因此会继续加载
            lastItemCount = itemCount;
            this.onLoadMore();
        }
    }
}

Android使用LayoutManager的findFirstCompletelyVisibleItemPosition和findLastCompletelyVisibleItemPosition判断是否加载新数据注意

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值