La extensión sintética de Kotlin y varias incluyen el mismo layout

Cómo acceder para ver usando la extensión sintética de kotlin si tengo un layout como el siguiente:

file: two_days_view.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <include android:id="@+id/day1" layout="@layout/day_row" android:layout_width="match_parent" android:layout_height="wrap_content" /> <include android:id="@+id/day2" layout="@layout/day_row" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

file: day_row.xml

  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/dayName" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

¿Cómo acceder a DayName? Busqué algo como esto:

 day1.dayName.text = "xxx" day2.dayName.text = "sss" 

Veo en Studio que tengo acceso a dayName pero ¿a cuál de dayName TextView se hace reference?

Normal si solo tengo un layout incluido, funciona bien. Pero ahora he incluido varias veces el mismo layout.

por supuesto que siempre puedo hacer:

 day1.findViewById(R.id.dayName).text = "xxx" 

pero estoy buscando una buena solución. 🙂

Como regla general, no debe build layouts que terminen teniendo múltiples vistas con el mismo ID, por esta misma razón.

Pero, para resolver su problema: en lugar de importar

kotlinx.android.synthetic.main.layout.day_row.*

puedes importar

kotlinx.android.synthetic.main.layout.day_row.view.* (Observe la .view adicional al final).

Esto importará las vistas no como properties en el nivel de Actividad / Fragmento, sino como properties de extensión para View . De esta forma, puede hacerlo de la manera que desee, suponiendo que day1 y day2 contengan las vistas que desea:

 day1.dayName.text = "xxx" day2.dayName.text = "sss" 
  • Cambiar el filter de color del elemento del cajón de navigation también cambia el imageView, que es el mismo ID de image
  • Diseño inflado por progtwigción con las extensiones de Kotlin para Android
  • Cómo lanzar Cadena en Int y Largo?
  • Click listener en ViewHolder solo responde a veces
  • Kotlin: No se puede encontrar la class de símbolo Fragmento u otras classs de Android
  • kotlin jvmname ignorado por Gradle?
  • registerReceiver () muestra error por método sobrecargado
  • El complemento gradle de Android se queja de un error de traducción no detectada
  • Error de complemento: Kotlin lanzó una IllegalStateException no detectada
  • Tipo de interferencia fallida. No coinciden los types esperados: requiere un par de cadenas encontrado <String, String> en Kotlin y Anko
  • Las classs de Kotlin que contienen android-extensiones no se basan en construcciones consecuentes