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

问题描述 投票:0回答:1

将新项添加到适配器和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之后,我无法理解为什么最后一个项目视图不可用。

请解释!

谢谢!

android android-layout android-recyclerview adapter
1个回答
0
投票

请用这个

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

您应该使用列表大小

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

而且无需称呼它

View itemView= mRecyclerView.getChildAt(mAdapter.getItemCount()-1);
© www.soinside.com 2019 - 2024. All rights reserved.