Android NotifyDataSetChanged刷新RecyclerView,但也会滚动。
我有一个RecyclerView,一个项目行需要像每秒一样更新(SeekBar)。因此,在更新列表中的数据后,我调用NotifyDataSetChanged。UI得到更新,但问题是RecyclerView会滚动,因此此特定项会显示在屏幕的顶部或底部。 我不想让RecyclerView滚动Android NotifyDataSetChanged刷新RecyclerView,但也会滚动。,android,scroll,android-recyclerview,Android,Scroll,Android Recyclerview,我有一个RecyclerView,一个项目行需要像每秒一样更新(SeekBar)。因此,在更新列表中的数据后,我调用NotifyDataSetChanged。UI得到更新,但问题是RecyclerView会滚动,因此此特定项会显示在屏幕的顶部或底部。 我不想让RecyclerView滚动 // Update Data mData.set(mData.indexOf(cardData), cardData); // RefreshView refreshView() {
// Update Data
mData.set(mData.indexOf(cardData), cardData);
// RefreshView
refreshView() {
runOnUiThread(new Runnable(){
notifyDataSetChanged();
}
);
您可以使用
notifyItemChanged(位置)更新一个项目代码>并且您不会更新适配器中的所有数据,您将只更新某些项目您可以使用notifyItemChanged(位置)更新一个项目代码>并且您不会更新适配器中的所有数据,您将只更新某些项目最好使用RecyclerView中的其他notify方法
对于您的用例,仅交换适配器中的一项,而不是所有项并使用
这将更快,视图不会滚动,如果您曾经添加动画,这将仅在您不使用notifyDataSetChanged
的情况下起作用。最好使用RecyclerView中的其他notify方法
对于您的用例,仅交换适配器中的一项,而不是所有项并使用
这将更快,视图不会滚动,如果您曾经添加动画,这将只在您不使用notifyDataSetChanged的情况下才起作用。我在“回收者”视图上方有一个卡片视图。我刚刚删除了它。现在整个屏幕是一个回收视图,我看不到任何自动滚动。我让它工作了。我在“回收者”视图上方有一个卡片视图。我刚刚删除了它。现在整个屏幕是一个recyclerView,我看不到任何自动滚动。是的,但这不会停止滚动。是的,但这不会停止滚动。我已经这样做了,我只是使用其他notify方法更新我需要的视图,但滚动仍保留在那里。我已经这样做了,我只是使用其他notify方法更新我需要的视图方法,但滚动仍保留在那里。您可以发布图像以澄清案例吗?您可以共享适配器的其余部分吗?您可以发布图像以澄清案例吗?您可以共享适配器的其余部分吗?