Я пытаюсь изучить kotlin, и я хочу преобразовать один из моих проектов андроида из java в 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 } } }
Я получаю ошибку. Операция не поддерживается для коллекции только для чтения в kotlin.collections.EmptyList.clear () в строке с помощью cityAdapter.clear () Я не знаю, как ее решить.
Для всего проекта, пожалуйста, проверьте
Проблемная историческая версия WeatherFragment
Текущая версия
На этой строке cityAdapter = CitySearchAdapter(context, emptyList())
emptyList
предоставит вам неизменный список (только для чтения), поэтому вам нужно использовать
cityAdapter = CitySearchAdapter(context, arrayListOf())
или
cityAdapter = CitySearchAdapter(context, mutableListOf<YourType>())
Мутируемые коллекции в Котлине
Как инициализировать MutableList Kotlin для удаления MutableList?
вы можете инициализировать arrylist глобально, как показано ниже
var mArrayBindStages: MutableList<String> = ArrayList()
добавить данные в список массивов, определить адаптер и установить на адаптер
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()