首页 > 解决方案 > titleList 显示不正确..?

问题描述

在 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 课程是

数据.java

private String id;
private String name;

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

标题列表.java

private String title;
private List<Data> dataList;

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

标签: androidkotlinmodelpojo

解决方案


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


推荐阅读