【问题标题】:NotifyDataSetChanged refreshes RecyclerView but scrolls as well.NotifyDataSetChanged 刷新 RecyclerView 但也会滚动。
【发布时间】:2017-06-08 15:00:15
【问题描述】:

我有一个 RecyclerView,需要像每秒一样更新一个项目行 (SeekBar)。因此,一旦更新列表中的数据,我就会调用 NotifyDataSetChanged。 UI 得到更新,但问题是 RecyclerView 滚动,因此这个特定项目位于屏幕的顶部或底部。 我不希望 RecyclerView 滚动。

// Update Data
    mData.set(mData.indexOf(cardData), cardData); 
    // RefreshView
    refreshView() {
       runOnUiThread(new Runnable(){
          notifyDataSetChanged();
         }
     );

【问题讨论】:

  • 你可以张贴图片来澄清案件吗?
  • 你能分享一下你的适配器吗?

标签: android scroll android-recyclerview


【解决方案1】:

您可以使用notifyItemChanged(position); 更新一项,并且您不会更新适配器中的所有数据,您只会更新某些项

【讨论】:

  • 是的,但这不会停止滚动。
【解决方案2】:

最好使用 RecyclerView 中的其他通知方法。

对于您的用例,仅换出适配器中的一项而不是所有项并使用notifyItemChanged(position)

这会更快,视图不会滚动,如果您要添加动画,这只有在您不使用 notifyDataSetChanged 时才有效

【讨论】:

  • 我已经这样做了,我只使用其他通知方法更新我需要的视图,但滚动仍然存在。
【解决方案3】:

我让它工作了。我在回收站视图上方有一个卡片视图。我刚刚删除了它。现在整个屏幕都是一个 recyclerView,我看不到任何自动滚动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    相关资源
    最近更新 更多