如何在 Kotlin 中创建对象列表?

时间:2021-01-18 08:51:03

标签: android kotlin

我是 kotlin 的新手,我如何创建一个对象列表然后在 Android 的 ListView 中成为用户?

我创建了一个名为 Articolo.kt 的类,如下所示:

data class Articolo(var barcode: String, var qty: Number)

所以传递给它的数据应该是“barcode”和“qty”,那么“barcode”将是一个唯一的键,如果存在一个带有它的项目,我将需要增加“qty”而不是添加一个新的列表。

然后这是我的功能,我在其中制作控件并将数据添加到类中:

private fun addBarcode() {
    val barcode = txtBarcode.text.toString()
    val qta = txtQta.text.toString().toInt()
    if (barcode.trim() == "") {
        txtBarcode.requestFocus()
        return;
    }

    Articolo(barcode, qta)

}

所以此时我的对象 Articolo 带有我的数据,但是如何将其添加到我可以从另一个片段访问并在 ListView 中使用的列表/集合中?

2 个答案:

答案 0 :(得分:3)

要在 kotlin 中创建数据列表,您需要简单地这样做

  var list = arrayOf(" here you pass the type of data you want")

  **Int Example
  var list = arrayOf(1,2,3)

  ** String example
  var list = arrayOf("string1","string2,"string3");
  • 如果你想使用模型类,你可以使用 mutablelist
 **you init a list 
 private var mylist : MutableList<Articolo>? = null

 ** then in your oncreate you reference it 
  mylist = mutableListOf()

 ** you can add your object class this way
 var Articolo = Articolo("barcode","qty")
 mylist.add(Articolo)


答案 1 :(得分:1)

private var mylist =  mutableListOf<Articolo>()


//find the same barcode and add the qty,otherwise add Articolo(barcode, qta) to list
mylist.find{
   it.barcode==barcode
}?.let{
   it.qty+=qta
}?:{
   mylist.add(Articolo(barcode, qta))
}

找到相同的条形码并添加数量,否则将Articolo(barcode, qta)添加到列表

Ps:作为unable-to-change-an-object-property-in-mutablelist中的问题,你不应该使用Number作为类型

相关问题