【问题标题】:How to initialize value in data class constructor kotlin如何在数据类构造函数kotlin中初始化值
【发布时间】:2023-03-08 17:11:01
【问题描述】:

我想在从服务器获取数据时初始化图像的值我试过这个但值没有更新。

@Entity(tableName = "categories")
data class Category(
    @PrimaryKey(autoGenerate = false)
    val name: String,
    var image: String,
){
   init{
     image = "someUrl" + image
   } 
}

【问题讨论】:

    标签: kotlin android-room data-class


    【解决方案1】:

    我猜你正试图让image 保存某个 URL 的完整路径。

    实现这一点的一个想法是在 Category 类中添加一个支持字段,如下所示

    
    @Entity(tableName = "categories")
    data class Category(
        @PrimaryKey(autoGenerate = false)
        val name: String,
        var image: String,
    ){
       val imageUrl: String
           get() = "some Url" + image
    }
    

    那么当你想加载你可以拥有的图像时

    val item:Category
    imgViwew.load(item.imageUrl)
    

    【讨论】:

      【解决方案2】:

      您可以在JPA lifecycle events 的帮助下解决这个问题,如下所示:

      @Entity(tableName = "categories")
      data class Category(
          @PrimaryKey(autoGenerate = false)
          val name: String,
          var image: String,
      ){
      
         @PostLoad // <---
         fun postLoad() {
           image = "someUrl" + image
         } 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-11
        • 2019-10-07
        • 2013-05-23
        • 2020-09-15
        • 1970-01-01
        • 2021-06-08
        • 1970-01-01
        • 2022-01-25
        相关资源
        最近更新 更多