RecyclerView往上滑动翻页时findFirstVisibleItemPosition() 所获取的值为什么不会改变?
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;
}
}