2017-09-07 5 views
3

J'essaie d'apprendre kotlin et je veux convertir un de mes projets Android de java à kotlin. Mais j'ai un problèmeArrayAdapter.clear kotlin

override fun onResponse(call: Call<List<CitySearch>>?, response: Response<List<CitySearch>>?) { 
    if(response != null && response.isSuccessful) { 
     val list = response.body() 
     cityAdapter.clear() 
     if(list != null && !list.isEmpty()){ 
      cityAdapter.addAll(list) 
      listView.visibility = View.VISIBLE 
      recyclerView.visibility = View.GONE 
      cityName.visibility = View.GONE 
     } 
    } 
} 

je reçois l'opération d'erreur est pas pris en charge pour la collecte de lecture seule à kotlin.collections.EmptyList.clear() sur la ligne avec cityAdapter.clear() Je ne sais pas comment le résoudre.

Pour tout projet s'il vous plaît vérifier

Problematic historic version of WeatherFragment

Current Version

+0

Quelle version de 'kotlin' utilisez-vous? –

Répondre

7

A cette ligne cityAdapter = CitySearchAdapter(context, emptyList())

emptyList volonté vous donne une liste immuable (lecture seule) de sorte que vous devez utiliser

cityAdapter = CitySearchAdapter(context, arrayListOf()) 

ou

cityAdapter = CitySearchAdapter(context, mutableListOf<YourType>()) 

Mutable Collections in Kotlin

How do I initialize Kotlin's MutableList to empty MutableList?

+0

merci l'homme. ceci est venu dans mon esprit ce matin et j'ai utilisé ArrayList () –

+0

votre ami de bienvenue, je suis heureux que je pourrais aider –

2

vous pouvez initialiser le arrylist globalement même comme suit

var mArrayBindStages: MutableList<String> = ArrayList() 

ajouter des données dans la liste de tableau définissent l'adaptateur et mis à l'adaptateur

var adapterSearch = User_Adapter_Search_Box(activity, dataList) 
       val mLayoutManager = GridLayoutManager(activity, 1) 
       rc_RecyclerView!!.layoutManager = mLayoutManager as RecyclerView.LayoutManager? 
       rc_RecyclerView!!.adapter = adapterSearch 

       adapterSearch!!.notifyDataSetChanged()