Solo se permiten llamadas seguras (?.) O no afirmadas (n.) En un receptor anulable.

¿Tengo que usar ?. y !!. cada vez dentro onBindViewHolder y onCreateViewHolder ? Hay alguna manera de evitar esto?

holder.textview.text y parent.context muestra este error.

Código:

 override fun onBindViewHolder(holder: ViewHolder?, position: Int) { holder.textview.text = items[position] } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int):ViewHolder { return ViewHolder(TextView(parent.context)) } 

Cuando reemplaza un método declarado en Java, sus parameters tendrán types de plataforma, lo que significa que no hay información de anulación sobre ellos (a less que estén explícitamente anotados ). Depende de usted decidir si marcar estos parameters con nulos o no. Consulte los documentos oficiales sobre types de plataforma .

En tu caso, puedes quitar el ? de estos dos parameters, ya que nunca pasarán valores null . Esto lo alivia de tener que hacer comprobaciones nulas obligatorias.


Esto es lo que parece con los types anulables eliminados:

 override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.textview.text = items[position] } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder(TextView(parent.context)) } 

El titular de la vista nunca será nulo, a less que haya creado un null viewholder en su onCreateViewHolder cuando count> 0, por lo que es seguro eliminarlo ?

 override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.textview.text = items[position] } 

Cuando trabaja con types anulables como en su ejemplo, debe aplicar medidas de security a su código. ¿O usas ?. cada vez que revises si tu parámetro es !=null . Después de tal if el comstackdor sabe que las llamadas a este parámetro son seguras y null no es posible.

En su caso especial, no es necesario tener types que aceptan nulos. Solo elimine los signos de interrogación de los parameters y todo estará bien.

Por cierto: ¡no uses !! , sin duda hay una mejor solución

  • Las requestes de Firebase nunca se completan en Android
  • ¿Las operaciones numéricas usando Kotlin son tan rápidas como el equivalente con las primitivas Java?
  • illegalArgumentsException en super.onCreate (saveInstanceState) en Kotlin
  • IDEA IllegalStateException: el service se está agotando al ejecutar la testing JUnit con Kotlin
  • ¿Cómo puedo crear un método "estático" para enum en Kotiln?
  • Extensión de Kotlin para el próximo valor de Enum sin reflexión
  • Jackson @ JsonIgnoreProperties múltiples campos con Kotlin
  • Kotlin: matriz de generics
  • Ahora estoy desarrollando una aplicación para Android con Kotlin, pero ocurrió un error: ComstacktionException: no se pudo llamar al método en línea 'readText' en
  • Los elementos del menu de la barra de herramientas Android nunca se muestran, pero entran en desbordamiento
  • La compilation de Kotlin falló en Android Studio