List的=和addAll,clear和new

List的赋值和清空,很小的问题却不太容易排查。

写TreeView时有两个List保存数据,一个allNodes,一个treeNodes。

最初写的,发现界面并没有变化

treeNodes = allNodes;

更新数据时
treeNodes = new ArrayList<>();
treeNodes = filter(allNodes);
adapter.notifyDataSetChanged()

第一次修改,然后没数据了,界面空白

treeNodes = allNodes;

更新数据时
treeNodes.clear();
treeNodes = filter(allNodes);
adapter.notifyDataSetChanged()

第二次修改,界面依旧没变化

treeNodes.addAll(allNodes);

更新数据时
treeNodes = new ArrayList<>();
treeNodes = filter(allNodes);
adapter.notifyDataSetChanged()

最终,界面正常刷新

treeNodes.addAll(allNodes);

更新数据时
treeNodes.clear();
treeNodes = filter(allNodes);
adapter.notifyDataSetChanged()

你可能感兴趣的:(List的=和addAll,clear和new)