RecyclerView往上滑动翻页时findFirstVisibleItemPosition() 所获取的值为什么不会改变?

ActionWind 初级 2021-01-21 05:15:04

RecyclerView往上滑动翻页的时候,linearLayoutManager.findFirstVisibleItemPosition() 所获取的值为什么不会改变?

往下滑的时候是会改变的,比如从1到9,往上滑就一直停留在9了。(准确的说:它跳到8,然后又马上变成9)

请大家帮我看看:为什么会发生这种情况?代码:

class PdfScrollListener extends RecyclerView.OnScrollListener {
int currentPage = 0;
int lastPage = 0;
PdfActivity pdfActivity;

public PdfScrollListener(PdfActivity pdf) {
pdfActivity = pdf;
}

@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
Log.e("Position","============:"+linearLayoutManager.findFirstVisibleItemPosition());

LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
if (((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition() == -1) {
currentPage = 0;
} else {
currentPage = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
}

//再插入之后的两页

if (currentPage > lastPage && currentPage + 2 < pdfActivity.pageCount) {//判断不超过总的页数就提前插入两页
pdfActivity.goDown(currentPage);
recyclerView.getAdapter().notifyItemInserted(currentPage + 2);
pdfActivity.deletePage(currentPage);

}

if (currentPage < lastPage && currentPage - 2 >= 0 && recyclerView.getAdapter().getItemId(currentPage - 2) == recyclerView.NO_ID) {
recyclerView.getAdapter().notifyItemInserted(currentPage - 3);
}
recyclerView.invalidate();
lastPage = currentPage;

}

}
...全文
408 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ActionWind 初级 2021-01-21
搞定了,是因为recyclerView.getAdapter().notifyItemInserted(currentPage - 3)往前插入item造成的 其实我要的不是插入item,只要修改数据源就可以了。改成用.notifyDataSetChanged()就可以了
  • 打赏
  • 举报
回复
相关推荐
发帖
Android
加入

7.9w+

社区成员

移动平台 Android
申请成为版主
帖子事件
创建了帖子
2021-01-21 05:15
社区公告
暂无公告