Kotlin arrayList: no se puede reescribir la list

Estoy usando una class llamada ItemHolder para mantener algunos objects en una list. Dinámicamente agrego algo. En cierto punto, necesito borrar los elementos (todos) para agregar nuevos. Cuando trato de get un elemento de la list, obtengo la IndexOutOfBoundException.

Aquí está el código que uso:

Inside ItemHolder

var itemList : ArrayList<Item> = arrayListOf() 

En otra class en init:

  itemHolder.itemList = arrayListOf() 

Y luego en la misma class:

 itemHolder.itemList.add(position, database.getRandomData()) 

y:

 itemHolder.getItem(position) 

El problema es que la primera vez que uso la class funciona bien, pero la segunda vez me lanza la exception.

 FATAL EXCEPTION: main Process: studio.monk.rq, PID: 2812 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.get(ArrayList.java:411) at studio.monk.rq.common.ItemHolder.getItem(ItemHolder.kt:9) at studio.monk.rq.fragments.MainFragment$onCreateView$vpPageChangeListener$1.onPageSelected(MainFragment.kt:44) at studio.monk.rq.fragments.MainFragment$onCreateView$1.run(MainFragment.kt:51) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

No define una nueva list usando arrayListOf.

Utilice ArrayList() ya que arrayListOf() solo se utiliza si desea inicializar una list con valores existentes y establecer el tamaño de los elementos que proporciona. En su caso, inicializa una list con el tamaño de 0.

Eso significa que esta es la forma correcta de hacer eso:

 var itemList = ArrayList<Item>() 

También puedes usar

 var itemList = mutableListOf<Item>() 

que es exactamente lo mismo que usar ArrayList<Item>() y debe usarse, ya que Kotlin puede cambiar la implementación más tarde.

  • sobrecarga + y + = operadores para "Clases de numbers"
  • Tema de Kotlin Quasar y problema de locking de canales
  • Conversión de layout lineal a cuadrícula
  • Acceder a los ID de resources usando Kotlin y Anko
  • Kotlin: ¿Cómo hacer el menu de la barra de herramientas con Anko DSL?
  • ¿La documentation de Kotlin es correcta?
  • Qué significa cerrar un canal de kotlinx.coroutines
  • Cómo establecer los parameters de layout en una imageView dentro de GridView en Android
  • Mapa de Kotlin y networkingucir el set de cadenas para mapear <String, Any!>
  • Clase de Android no encontrada Intermiten y se extienden a través del código
  • Toma la input en la matriz con el bucle