[NotifyDataSetChanged在RecyclerView中更改了列表中某些项目的字段时不起作用

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

我有一个型号UniqueUserTransModel和一个UniqueArrayList。最初,我拥有列表,并将其传递给适配器。

旧列表->

pos : 0, name : "user 1", transcount : 10
pos : 1, name : "user 2", transcount : 9
pos : 2, name : "user 3", transcount : 8
pos : 3, name : "user 4", transcount : 7
pos : 4, name : "user 5", transcount : 6

更新后,我有一个NewList,并将其设置为UniqueArrayList =(新计算的ArrayList)。

新列表->

pos : 0, name : "user 2", transcount : 11
pos : 1, name : "user 1", transcount : 9
pos : 2, name : "user 3", transcount : 8
pos : 3, name : "user 4", transcount : 7
pos : 4, name : "user 5", transcount : 6

而且我刚刚从片段中调用了notifydatasetChanged

[前两个项目在NewList中被交换,但没有反映在recyclerview中。

为什么不反映出来?我知道如果我清除了旧列表并重新添加了新列表,它将起作用,或者如果我添加或删除了一个新条目,它也会起作用。

android android-recyclerview notifydatasetchanged
1个回答
0
投票

不为适配器创建新的Arraylist。

清除阵列列表,并从新的阵列列表中将所有项目添加到其中。

旧ArrayList

UniqueArrayList.clear()

New Arraylist

UniqueArrayList.addAll(**name of new arraylist**)

现在再次重新加载数据集。

notifyDataSetChanged()
© www.soinside.com 2019 - 2024. All rights reserved.