在添加新项目和notifyDataSetChanged之后如何从RecyclerView获取最后一个项目视图?

时间:2018-09-06 11:56:32

标签: android android-layout android-recyclerview adapter

在将新项目添加到适配器和 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 后无法使用最后一个项目视图。

请解释!

谢谢!

1 个答案:

答案 0 :(得分:0)

请使用此

mListItem.add("Hello Data");
mAdapter.notifyDataSetChanged();
mRecyclerView.scrollToPosition(mListItem.size() - 1);

您应该使用列表大小,例如

mListItem.size()而不是mAdapter.getItemCount()

并且无需致电

View itemView= mRecyclerView.getChildAt(mAdapter.getItemCount()-1);