Как добавить элемент в список в kotlin - PullRequest
4 голосов
/ 03 апреля 2019

Я пытаюсь добавить список элементов в список строк, но я обнаружил, что Kotlin не имеет функции добавления, такой как java, поэтому, пожалуйста, помогите мне, как добавить элементы в список.

class RetrofitKotlin : AppCompatActivity() {

    var listofVechile:List<Message>?=null
    var listofVechileName:List<String>?=null
    var listview:ListView?=null
    var progressBar:ProgressBar?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_retrofit_kotlin)

        listview=findViewById<ListView>(R.id.mlist)
        var apiInterfacee=ApiClass.client.create(ApiInterfacee::class.java)
        val call=apiInterfacee.getTaxiType()
        call.enqueue(object : Callback<TaxiTypeResponse> {

            override fun onResponse(call: Call<TaxiTypeResponse>, response: Response<TaxiTypeResponse>) {

                listofVechile=response.body()?.message!!
                println("Sixze is here listofVechile   ${listofVechile!!.size}")
                if (listofVechile!=null) {
                    for (i in 0..listofVechile!!.size-1) {

                        //how to add the name only listofVechileName list

                    }
                }
                //println("Sixze is here ${listofVechileName!!.size}")
                val arrayadapter=ArrayAdapter<String>(this@RetrofitKotlin,android.R.layout.simple_expandable_list_item_1,listofVechileName)
                listview!!.adapter=arrayadapter

            }
            override fun onFailure(call: Call<TaxiTypeResponse>, t: Throwable) {

            }
        })
    }
}

Ответы [ 4 ]

4 голосов
/ 03 апреля 2019

вы должны использовать MutableList, такой как ArrayList

var listofVechileName:List<String>?=null

становится

 var listofVechileName:ArrayList<String>?=null

и с этим вы можете использовать метод добавить

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/add.html

1 голос
/ 03 апреля 2019

Более идиоматическим подходом было бы использование MutableList вместо конкретно ArrayList.Вы можете объявить:

val listOfVehicleNames: MutableList<String> = mutableListOf()

И добавить к этому таким образом.В качестве альтернативы вы можете предпочесть неизменность и объявить его как:

var listOfVehicleNames: List<String> = emptyList()

А в своем блоке завершения просто переназначить его:

listOfVehicleNames = response.body()?.message()?.orEmpty()
    .map { it.name() /* assumes name() function exists */ }
0 голосов
/ 16 июня 2019

Если вы не хотите или не можете использовать список массивов, используйте этот код для добавления элемента

itemsList.toMutableList().add(item)

itemlist : список ваших товаров

пункт : элемент, который вы хотите добавить

0 голосов
/ 03 апреля 2019

вместо использования обычного списка, который является неизменным, просто используйте arrayListof, который является изменяемым

так что ваш обычный список придет

var listofVehicleNames = arrayListOf("list items here")

тогда вы можете использовать функцию добавления

listOfVehicleNames.add("what you want to add")
...