在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类(class)是

资料库
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,则此列表绑定(bind)到您创建的标题列表的实例,并且如果更改list的值,该列表也会更改。因此,实例将始终具有您为变量list赋予的最新值。这就是为什么在所有3种情况下总是得到[6 Name 6,7 Name 7]的原因。

10-07 22:18