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. 🙂

Solutions Collecting From Web of "La extensión sintética de Kotlin y varias incluyen el mismo layout"

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"