Синтетическое расширение Kotlin и несколько включают в себя одну и ту же компоновку

Как получить доступ к просмотру с использованием синтетического расширения kotlin, если у меня есть макет, как показано ниже:

Файл: 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> 

файл: 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> 

Как получить доступ к dayName? Я искал некоторые такие:

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

Я вижу в Studio, что у меня есть доступ к dayName но к которому относится один из dayName TextView?

Нормальный, если у меня есть только один включенный макет, он отлично работает. Но теперь я несколько раз включал один и тот же макет.

конечно, я всегда могу:

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

но я ищу хорошее решение. 🙂

Как правило, вы не должны создавать макеты, которые в конечном итоге имеют несколько видов с одним и тем же идентификатором – именно по этой причине.

Но, чтобы решить вашу проблему: вместо импорта

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

вы можете импортировать

kotlinx.android.synthetic.main.layout.day_row.view.* (Обратите внимание на дополнительное .view в конце).

Это импортирует представления не как свойства на уровне Activity / Fragment, а в качестве свойств расширения для View . Таким образом, вы можете сделать это так, как хотите, считая, что day1 и day2 содержат day2 вам виды:

 day1.dayName.text = "xxx" day2.dayName.text = "sss" 
Intereting Posts
Как получить второй фрагмент из списка popBackStack в pop? Kotlin – присвоить значение переменной enum переменной без значения. Kotlin `this` не возвращает правильный экземпляр в унаследованном классе Kotlin: Невозможно объявить аргумент типа mutableListOf в определении класса Spring Boot: добавление @Transactional создает java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder $ PartialComparable Kotlin / Android: возвращение может быть отменено из «когда» Как запустить класс Kotlin из командной строки? kapt: Как обрабатывать тестовые источники? android.view.InflateException: двоичная строка XML-файла # 32: двоичная строка XML-файла # 32: ошибка раздувания класса Не удалось скомпилировать код Котлина Преобразование больших чисел в байт в Котлине Объединение данных из разных Observables и выбор различных стратегий получения, в зависимости от доступности данных Общий расширяемый класс с сопутствующим объектом в Котлине Вызовите новую установку приложения Невозможно найти сеттер для поля – используя базу данных Kotlin с комнатой