我们在开发过程中经常会遇到需要保存列表中每个条目的选中状态的需求(例如购物车多选),用户修改完数据后判断每个条目是否选中把用户修改的数据传给后台,这时我们直接修改实体类bean中的数据就会方便很多。
java中使用set,get就可以实现,而在Kotlin中修改实体类bean中对应的字段值时确遇到了坑。
首先,我们需要给是否选中状态设置一个默认状态,我们默认每个条目状态为未选中
data class DataListBean(
@SerializedName("RSPDATA")
var rSPDATA: RSPDATA,
) {
data class RSPDATA(
@SerializedName("LIST")
var lIST: List<LIST>
) {
data class LIST(
@SerializedName("NAME")
var nAME: String, //名字
var isLock:String = "00" //00未选中、01选中
)
}
}
然而代码运行后发现默认值无效,废了老大劲,调了半天,结合网上大神们的解释发现要想默认值生效,实体类LIST集合里的每一个字段都要有默认值,才会走默认的构造方法。否则有一个没有设置默认值,其它字段设置的默认值都不会生效。正确实体类添加默认值代码如下:
data class DataListBean(
@SerializedName("RSPDATA")
var rSPDATA: RSPDATA,
) {
data class RSPDATA(