Android NotifyDataSetChanged刷新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() {

我有一个RecyclerView,一个项目行需要像每秒一样更新(SeekBar)。因此,在更新列表中的数据后,我调用NotifyDataSetChanged。UI得到更新,但问题是RecyclerView会滚动,因此此特定项会显示在屏幕的顶部或底部。 我不想让RecyclerView滚动

// 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方法更新我需要的视图方法,但滚动仍保留在那里。您可以发布图像以澄清案例吗?您可以共享适配器的其余部分吗?您可以发布图像以澄清案例吗?您可以共享适配器的其余部分吗?