【问题标题】:How to change a specific variable from data class in Kotlin?如何从 Kotlin 的数据类中更改特定变量?
【发布时间】:2019-08-23 08:50:01
【问题描述】:

我有一个名为“DATA”的数据类,然后我创建了一个 ArrayList 变量,如下所示:

    var listData : ArrayList<DATA>

但我需要更改某个位置的变量但我不知道如何更改它。如果在 Java 中我们可以只使用 setter 和 getter。如何更改特定的变量表单数据类?

【问题讨论】:

  • 你能显示完整的使用代码吗
  • data kotlin 中的类默认具有 setter/getter。如果要更改对象的值,则需要将变量属性设置为var,而不是val

标签: android kotlin


【解决方案1】:

您似乎想在数组中的特定位置插入新数据?

假设您的数据类定义如下:

data class MyDataClass(var listData : ArrayList<Data>)

class Data

你只需要:

    val myDataClass = MyDataClass(arrayListOf())
    val someNewData = Data() 
    val index = 0
    myDataClass.listData[index] = someNewData

【讨论】:

    【解决方案2】:

    首先(对不起,我必须保留这个)类不应该全部大写 :-) 通常,在命名约定中,这适用于常量值。类仅以首字母大写命名(如果您打算申请 pro android dev 职位,这只是一个建议。)。其次,数据类就像更简单的 Java 的 AutoValue 生成的对象。他们的价值观是故意不可变的。您不能更改数据类中的值。在 Kotlin 中这是不可能的。如果数据类中的值需要更改,它们通常发生在映射到另一个数据类时。假设将网络反序列化数据类对象映射到域层数据类对象。 (数据响应-> 数据)。所以如果你需要改变它,你可以把数据类的值分配给某个局部变量然后改变它,或者映射到另一个数据类。

    【讨论】:

      【解决方案3】:

      试试这个,

      var dataObject = DATA();
      
      dataObject.listData[index] = "Your data";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 2021-05-30
        相关资源
        最近更新 更多