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

ActionWind ActionWind 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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;

}

}
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
ActionWind
Android 80,489 成员 91,375 内容