titleList 显示不正确..?

The titleList is displayed incorrectly..?

在 logcat 我得到

[标题 1 [6 姓名 6, 7 姓名 7], 标题 2 [6 姓名 6, 7 姓名 7], 标题 3 [6 姓名 6, 7 姓名 7]]

我想要的是

[标题 1 [1 姓名 1, 2 姓名 2], 标题 2 [3 姓名 3, 4 姓名 4, 5 姓名 5], 标题 3 [6 姓名 6, 7 姓名 7]]

    var list:MutableList<Data> = ArrayList();
    val titlelist:MutableList<TitleList> = ArrayList()

    list.add(Data("1","Name 1"));
    list.add(Data("2","Name 2"));

    titlelist.add(TitleList("Title 1",list))
    list.clear()


    list.add(Data("3","Name 3"));
    list.add(Data("4","Name 4"));
    list.add(Data("5","Name 5"));

    titlelist.add(TitleList("Title 2",list))
    list.clear()


    list.add(Data("6","Name 6"));
    list.add(Data("7","Name 7"));

    titlelist.add(TitleList("Title 3",list))


    Log.d("TITLE_LIST",titlelist.toString())

我的 Pojo 类 是

Data.java

private String id;
private String name;

public Data(String id, String name) {
    this.id = id;
    this.name = name;
}

TitleList.java

private String title;
private List<Data> dataList;

public TitleList(String title, List<Data> dataList) {
    this.title = title;
    this.dataList = dataList;
}

您需要更改将项目添加到标题列表的行。在 TitleList 的构造函数中,传递 ArrayList(list) 而不是 list(例如 titlelist.add(TitleList("Title 2",ArrayList(list))))。对将项目添加到标题列表的所有 3 行执行此操作。这是因为如果您使用变量 list,此列表将绑定到您创建的标题列表的实例,并且会随着您更改 list 的值而改变。因此实例将始终具有您赋予变量 list 的最新值。这就是为什么在所有 3 种情况下您总是得到 [6 Name 6, 7 Name 7]。