在我的項目中,我使用帶有pulltorefresh的RecyclerView,並在滾動到bottom時加載更多數據。這裏是代碼片段。爲什麼findLastVisibleItemPosition返回1,而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是wrong.For例子,我加載10個項目,所有項目可以在顯示scrren。 totalItemCount是10,但lastVisibleItemPosition是1,totalItemCount是2.(應該是9和10)。
但是,當我刷新RecyclerView(通過相同的代碼重新加載數據)或加載更多的數據時,findLastVisibleItemPosition是正確的。
而當RecyclerView第一次加載數據並顯示在屏幕上時,我檢查findLastVisibleItemPosition是否正確。
所以我的問題是,notifyDataSetChanged是一個aysnc函數嗎?如果是,哪個事件可以得到正確的findLastVisibleItemPosition?還是有更好的方法來獲取?
感謝您閱讀我可憐的英語。