【发布时间】:2017-07-14 23:07:26
【问题描述】:
在我的项目中,我使用带有 pulltorefresh 的 RecyclerView 并在滚动到底部时加载更多数据。这是一个代码片段。
mData.addAll(data);
mAdapter.notifyDataSetChanged();
LinearLayoutManager layoutManager = (LinearLayoutManager) this.getLayoutManager();
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
我发现RecyclerView第一次加载数据时,所有数据都无法填满屏幕高度,lastVisibleItemPosition和visibleItemCount是错误的。比如我加载了10个item,所有item都可以显示在屏幕上。 totalItemCount 是 10,但 lastVisibleItemPosition 是 1,totalItemCount 是 2。(应该是 9 和 10)。
但是当我刷新 RecyclerView(通过相同的代码重新加载数据。)或加载更多数据时,findLastVisibleItemPosition 是正确的。
当 RecyclerView 第一次加载数据并显示在屏幕上时,我检查 findLastVisibleItemPosition 也是正确的。
所以我的问题是,notifyDataSetChanged 是 aysnc 函数吗?如果是,我可以通过哪个事件获得正确的 findLastVisibleItemPosition?或者有更好的方法来获得它吗?
感谢阅读我蹩脚的英语。
【问题讨论】:
标签: android android-recyclerview position