Hashmap con tipo de datos ArrayList (Kotlin)?

Estas son las variables y la diversión addControl que utilicé.

var arrayTQ = ArrayList<TongQuan>() var arrayBG = ArrayList<BangGia>() var epdbLV: ExpandableListView? = null var listHeader: List<String> = listOf() var listChild = HashMap<String, ArrayList<Any>>() var arrayListData = ArrayList<String>() private fun addControl() { epdbLV = findViewById(R.id.epdbList) listHeader = ArrayList() listChild = HashMap<String, ArrayList<Any>>() listHeader = listOf("Tổng Quan Thị Quan Thị Trường, Bảng Giá, Lịch Sự Kiện, Tin Tức, Chỉ Số Thế Giới") arrayListData = ArrayList() arrayTQ = ArrayList() arrayBG = ArrayList() } 

Y puse el listChild.put en la anulación de la diversión en la class interna GetData ext AsyncTask. El error en arrayTQ es sobre el tipo de datos que TongQuan no coincide con Any. En Java, no es necesario agregar typedata después de ArrayList en HashMap. Ayúdame a solucionarlo, busqué y probé. Gracias chicos.

 override fun onPostExecute(result: ArrayList<String>) { super.onPostExecute(result) getDataTQ() getDataBG() listChild.clear() listChild.put(listHeader.get(1), arrayTQ) } 

ArrayList<TongQuan> no es un elemento secundario de ArrayList<Any> .

Entonces en lugar de esto: listChild = HashMap<String, ArrayList<Any>>()

deberías tener: listChild = HashMap<String, ArrayList<TongQuan>>()


Sin embargo, esto le permitirá agregar solo ArrayList<TongQuan> . Si desea la posibilidad de agregar ArrayList<TongQuan> o ArrayList<BangGia> , entonces debe hacer lo siguiente:

listChild = HashMap<String, ArrayList<out Any>>()

Para get una documentation detallada sobre la varianza, consulte aquí: https://kotlinlang.org/docs/reference/generics.html

Any es diferente con Object en Java. A diferencia de Java, donde cada class es hija de Object, en kotlin no todas las classs son hijos de Any .

En lugar de utilizar ArrayList, debe usar la list de kotlin. debería funcionar así:

 ar arrayTQ = mutableListOf<TongQuan>() var arrayBG = mutableListOf<BangGia>() var epdbLV: ExpandableListView? = null var listHeader: List<String> = listOf() var listChild = HashMap<String, List<Any>>() var arrayListData = mutableListOf<String>() private fun addControl() { epdbLV = findViewById(R.id.epdbList) listHeader = ArrayList() listChild = HashMap<String, List<Any>>() listHeader = listOf("Tổng Quan Thị Quan Thị Trường, Bảng Giá, Lịch Sự Kiện, Tin Tức, Chỉ Số Thế Giới") arrayListData.clear() arrayTQ.clear() arrayBG.clear() } 

debe ser seguro llamar

 override fun onPostExecute(result: ArrayList<String>) { super.onPostExecute(result) getDataTQ() getDataBG() listChild.clear() listChild.put(listHeader.get(1), arrayTQ) } 

como sugiere @Henry, debes leer la variación de kotlin https://kotlinlang.org/docs/reference/generics.html

  • Pass facebook AccessToken por Retrofit
  • No se pudo deducir Kotlin y RxJava
  • ¿Cómo puedo hacer que kotlin se dé count de que esta function de comparación de BST es recursiva de queue?
  • OnCreateOptionsMenu llamado de class abstracta
  • Código automático Kotlin llamando en el patrón de delegación
  • Atajo de IntelliJ para la configuration de ejecución
  • No se proporcionan suficientes datos a HAL, position esperada
  • Acceda a Integer.class desde Kotlin
  • Alternativa de Kotlin al performance de la corotina de Python y enviar
  • ¿Cómo get la reference de class de KParameter en kotlin?
  • nullPointerException en shanetworkingpreferences class auxiliar Al ejecutar una testing