我正在从Internet加载JSON数据,捕获有关项目的数据,如名称、作者和imageurl。然后我想把它们一个放在另一个下面,所以我把它们放在ListView中。我只将它们作为一个自定义类添加一次,它只保存那些变量。
我对那些值的重复和不出现有问题。例如,它将加载前5个项目(20个项目中的一个),并在剩余的15个项目中重复这些项目。我不明白为什么会发生这种情况,还试图循环访问ListView
items
数组并打印它们,它们都是不同的,也尝试对它们执行refresh(),但它似乎根本没有改变任何东西。
我添加了一个代码,用来创建listview和用来填充它的片段。
val lv = listview<Item>{
anchorpaneConstraints {
topAnchor = 0.0
bottomAnchor = 0.0
leftAnchor = 0.0
rightAnchor = 0.0
}
cellFormat {
graphic = cache {
form {
fieldset {
hbox {
spacing = 10.0
println(it.name)
println(it.author)
println(it.imgurl)
println(it.desc)
imageview {
image = Image(it.imgurl)
prefWidth(256.0)
prefHeight(256.0)
}
vbox {
field("Name") {
label(it.name)
}
field("Author") {
label(it.author)
}
field("Description") {
label {
text = it.desc
wrapWidth = 150
}
}
}
}
}
}
}
}
}
val tmpItems = items.clone() as ArrayList<JsonObject>()
val arr = ArrayList<Item>()
for (m in tmpItems) {
arr.add(
Item(
m["name"].toString(),
m["author"].toString(),
m["desc"].toString(),
m["imgUrl"].toString()
)
)
}
lv.items.addAll(arr)
我期望输出是20个独特的项目,因为这就是
lv.items
,但显示的结果是在20行中重复5个唯一项。