android - 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;
}
解决方案
您需要更改将项目添加到标题列表的行。在 TitleList 的构造函数中,传递ArrayList(list)
而不是list
(Eg. titlelist.add(TitleList("Title 2",ArrayList(list)))
)。对您将项目添加到标题列表的所有 3 行执行此操作。这是因为如果您使用该变量list
,此列表将绑定到您创建的标题列表的实例,并且如果您更改 的值,该列表也会更改list
。因此,实例将始终具有您为 variable 提供的最新值list
。这就是为什么在所有 3 种情况下你总是得到 [6 Name 6, 7 Name 7] 的原因。
推荐阅读
- c++ - 为什么我的静态分析器找不到潜在的未初始化读取?
- python - 在 python 3 中无法访问(嵌套)枚举类型(proto3)
- grafana - 在influxdb中查询时如何写case?
- python - 在python中使用递归函数和结构类型?
- r - 使用 sparklyr 读取固定宽度的文件
- angular - pdfviewer:无法读取未定义的属性“FontInspector”?
- java - 打印在彼此下方格式化的两行
- firebase - 如何使用 rnfirebase 在 react-native android 中发送带有图像的推送通知
- java - Wildfly Swarm:配置自定义数据源的问题
- java - 如何在 Android 中更改 listView 的字体?