RecyclerView的使用是非常常见的,在加载更多常用的方法是
private void setLoadMoreListener() {
final GridLayoutManager layoutManager = (GridLayoutManager)mRecyclerView.getLayoutManager();
//设置滑动监听,当滑动到最后一个时,加载更多
if (onScrollListener == null) {
onScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
lastVisibleItemPosition=layoutManager.findLastCompletelyVisibleItemPosition();
if (lastVisibleItemPosition == layoutManager.getItemCount() - 1) {
//加载更多
page++;
getVideoInfo();
}
}
};
mRecyclerView.setOnScrollListener(onScrollListener);
}
但是最近遇到了加载不了的一个坑,加载了一部分,之后就没法加载更多了,找了好久的bug,打印Log日志终于找到了,在这里记录一下,其实就是
layoutManager.findLastCompletelyVisibleItemPosition();
这个方法获取数据失败,一直返回-1。有时能够加载,加载一部分就没法加载了,其原因主要这当滑动到最后一个可见的item的时候,这个item的高度超过了手机的屏幕的高度,由于是多个布局,偶尔有一个item的高度超过了屏幕高度,又恰好这个item在最后,就没法加载更多了,没办法,找办法解决呗,
要不就重新把布局相对降低一点高度,让RecyclerView的layoutmanager能够获取到位置,或者寻求其他的加载更多的方法。
网友评论