在将新项目添加到适配器和 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 后无法使用最后一个项目视图。
请解释!
谢谢!
答案 0 :(得分:0)
请使用此
mListItem.add("Hello Data"); mAdapter.notifyDataSetChanged(); mRecyclerView.scrollToPosition(mListItem.size() - 1);
您应该使用列表大小,例如
mListItem.size()
而不是mAdapter.getItemCount()
并且无需致电
View itemView= mRecyclerView.getChildAt(mAdapter.getItemCount()-1);