32 votes

Comment ajouter un élément à une liste dans Kotlin?

J'essaie d'ajouter une liste d'éléments à la liste de chaînes, mais j'ai trouvé que Kotlin n'a pas de fonction d'ajout comme java alors s'il vous plaît, aidez-moi à ajouter les éléments à la liste.

 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) {

            }
        })
    }
}

25voto

kcoppock Points 57219

Une approche plus idiomatique consisterait à utiliser MutableList au lieu de spécifiquement ArrayList . Vous pouvez déclarer:

 val listOfVehicleNames: MutableList<String> = mutableListOf()

Et ajoutez-y de cette façon. Vous pouvez également préférer l'immuabilité et la déclarer comme:

 var listOfVehicleNames: List<String> = emptyList()

Et dans votre bloc de complétion, réaffectez-le simplement:

 listOfVehicleNames = response.body()?.message()?.orEmpty()
    .map { it.name() /* assumes name() function exists */ }

21voto

Radesh Points 2416

Si vous ne voulez pas ou ne pouvez pas utiliser la liste de tableaux directement, utilisez ce code pour ajouter un élément

 itemsList.toMutableList().add(item)

itemlist : liste de vos articles

élément : élément que vous souhaitez ajouter

10voto

Jonik Points 18905

Parler d'une approche idiomatique ...

6voto

Peppe S Points 130

vous devriez utiliser une MutableList comme ArrayList

 var listofVechileName:List<String>?=null

devient

  var listofVechileName:ArrayList<String>?=null

et avec cela, vous pouvez utiliser la méthode add

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

3voto

Brent Points 286

au lieu d'utiliser une liste régulière qui est immuable, utilisez simplement un arrayListof qui est mutable

donc votre liste régulière deviendra

 var listofVehicleNames = arrayListOf("list items here")

alors vous pouvez utiliser la fonction d'ajout

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X