2017-09-07 8 views
3

Ich versuche, Kotlin zu lernen, und ich möchte eines meiner Android-Projekte von Java zu Kotlin konvertieren. Aber ich habe ein ProblemArrayAdapter.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 
     } 
    } 
} 

ich den Fehler Betrieb erhalte nicht für schreibgeschützte bei kotlin.collections.EmptyList.clear Sammlung unterstützt wird() auf der Linie mit cityAdapter.clear() Ich weiß nicht, Wie man es löst.

Für alle das Projekt überprüfen Sie bitte

Problematic historic version of WeatherFragment

Current Version

+0

Welche 'kotlin' Version benutzen Sie? –

Antwort

7

An dieser Linie cityAdapter = CitySearchAdapter(context, emptyList())

emptyList erhalten Sie eine unveränderliche Liste gibt (nur lesen), so müssen Sie

verwenden
cityAdapter = CitySearchAdapter(context, arrayListOf()) 

oder

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

Mutable Collections in Kotlin

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

+0

danke Mann. das kam mir heute morgen in den Sinn und ich habe ArrayList () –

+0

Ihren Willkommenskameraden, ich bin froh, dass ich helfen konnte –

2

Sie den arrylist global gleiche initialisieren können wie folgt

var mArrayBindStages: MutableList<String> = ArrayList() 

Daten in Array-Liste hinzufügen, um den Adapter definieren und

an Adapter
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()