Smartcasting hacia y desde el tipo de plataforma en kotlin

Estoy usando kotlin para crear mi adaptador que amplía BaseAdapter en Android. a continuación está el código dentro del método getView

 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { var binding : ImageBinding var conView = convertView if(conView == null){ binding = DataBindingUtil.inflate(LayoutInflater.from(parent?.context), R.layout.image, parent, false) conView = binding.root; conView.tag = binding }else { binding = conView.getTag() as ImageBinding } return conView; } 

conView.tag = binding y binding = conView.getTag() se resalta en un color rosa. Al pasar el cursor sobre conView.tag = binding con mi mouse, aparece una window emergente con un post Smart cast para android.view.View! . Y cuando binding = conView.tag sobre binding = conView.tag , aparece una window emergente con un post Smart cast para android.view.View . Tenga en count la diferencia en los dos posts donde a este último le falta el signo de tipo de plataforma (!)

¿Cómo puedo implementar las dos opciones sugeridas?

Debido a que convertView es una variable de tipo anulable ( View? ), var conView = convertView crea una copy de una variable conView que conView . Por lo tanto, debe manejar la variable conView como anulable.

Pruebe de la siguiente manera:

 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { var binding : ImageBinding convertView?.let { binding = it.tag as ImageBinding return it } binding = DataBindingUtil.inflate(LayoutInflater.from(parent?.context), R.layout.image, parent, false) val conView = binding.root conView.tag = binding return conView } 

Nota : Los puntos y coma en Kotlin no son necesarios, tenga en count que

  • Cualquier mejora de código en agregar / replace fragment
  • Android Kotlin .visibilidad
  • Usar Kotlin en un module de biblioteca sin usarlo en el module de la aplicación
  • El complemento de Kotlin falla Android Studio
  • Parse 2D Array en Kotlin
  • Koltin MyClass.class.java Referencia no resuelta: java
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
  • Referencia no resuelta a la function en Kotlin Android