NotifyDataSetChanged刷新RecyclerView,但也滚动。

时间:2017-06-08 15:00:16

标签: android scroll android-recyclerview

我有一个RecyclerView,每一秒需要更新一个项目行(SeekBar)。所以我在更新列表中的数据后调用NotifyDataSetChanged。 UI会更新,但问题是RecyclerView会滚动,以便此特定项目位于屏幕的顶部或底部。 我不希望RecyclerView滚动。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

对于您的用例,只需更换适配器中的一个项目而不是所有项目,然后使用notifyItemChanged(position)

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

时才有效

答案 2 :(得分:0)

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