将新项添加到适配器和notifyDataSetChanged后无法获取最后一个项目视图。
在调用notifyDataSetChanged()之后我将从RecyclerView获取最后一个项目视图时获取空项目视图。
在某些情况下获取项目视图对象但无法获得精确的视图对象,但大小和项目计数是正确的。
场景1:
mListItem.add("Hello Data");
mAdapter.notifyDataSetChanged();
mRecyclerView.scrollToPosition(mAdapter.getItemCount() - 1);
View itemView= mRecyclerView.getChildAt(mAdapter.getItemCount()-1);
以上itemView始终获取空值。
场景2:
mListItem.add("Hello Data");
mAdapter.notifyDataSetChanged();
mRecyclerView.scrollToPosition(mAdapter.getItemCount() - 1);
int lastItemPosition = linearLayoutManager.findLastVisibleItemPosition();
View itemView= linearLayoutManager.findViewByPosition(lastItemPosition);
以上itemView给出第二个最后一个项目视图,但大小是正确的。
在调用右后卫notifyDataSetChanged之后,我无法理解为什么最后一个项目视图不可用。
请解释!
谢谢!
请用这个
mListItem.add("Hello Data"); mAdapter.notifyDataSetChanged(); mRecyclerView.scrollToPosition(mListItem.size() - 1);
您应该使用列表大小
mListItem.size()
而不是mAdapter.getItemCount()
而且无需称呼它
View itemView= mRecyclerView.getChildAt(mAdapter.getItemCount()-1);