我必须使用一个类作为android房间实体。我想实例化将每个列表项作为参数的每个对象。每个对象都有一个大小不同的列表。
@Entity
data class Riga(
@PrimaryKey var dataengNuova: String?=null,
var dataengVecchia: Long?=null,
var numggeng: Long?=null,
var dataitaVecchia: Long?=null,
var dataitaNuova: Long?=null,
var numggita: Long?=null,
var dataudioNuova: Long?=null,
var dataudioVecchia: Long?=null,
var numggaudio: Long?=null
var datangVecchia: Long?=null,
var numggng: Long?=null,
var dataitaecchia: Long?=null,
var dataitauova: Long?=null,
var numggia: Long?=null,
var dataudoNuova: Long?=null,
var datauoVecchia: Long?=null,
var numggadio: Long?=null
var numgia: Long?=null,
var dataudNuova: Long?=null,
var datauoecchia: Long?=null,
var numggdio: Long?=null)
我怎么做,而每个对象的列表都有不同的大小?
我想要这样的东西:
var firstObjectParams= listOf(1,2,4,6)
var secondObjectParams= listOf(6,79,4657,7885,56777,5657,5677,6776)
类似这样:
obj1=Riga('hg',1,2,4,6)
obj2=Riga('hk',6,79,4657,7885,56777,5657,5677,6776)
但是我有数百个列表,包含1至20个项目。
我知道我可以写20条if (list.size==number)
语句。我在想一种更简单的方法。
我认为没有简单的方法可以做到这一点。另外,在您要添加/删除变量的情况下,使用Map<String, Long>
可能是更好的方法。
fun createRiga(params: List<Long>): Riga {
val newParams = mutableListOf<Long?>()
for (i in 0 until 20) {
if (params.size > i) {
newParams.add(params[i])
} else {
newParams.add(null)
}
}
return Riga(newParams[0], newParams[1], newParams[2], .....)
}
同样,更好的解决方案是使用地图。
带有地图,
data class Riga(val id: Int, val params: Map<String, Long>)
自从您提到以来,您正在从HTML解析中获取这些值,所以您也将具有一些参数来解析这些值。您可以使用参数作为键。
解决了,很容易。我已经预处理了二十个项目清单。欢迎提供更好的解决方案。
var list=mutableListOf<Int?>(2,4,5)
repeat(20 - list.size){ list.add(null) }