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> 

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> 

如何访问dayName? 我寻找这样的一些:

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

我在Studio中看到,我有权访问dayName但dayName TextView被引用到哪一个?

正常,如果我只有一个包括的布局,它工作正常。 但现在我有多次包括相同的布局。

当然我可以随时做:

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

但我正在寻找很好的解决方案。 🙂

作为一般的经验法则,您不应该使用相同的id来构造最终具有多个视图的布局 – 出于这个原因。

但是,要解决你的问题:而不是导入

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

你可以导入

kotlinx.android.synthetic.main.layout.day_row.view.* (注意最后的附加.view )。

这将导致视图不是Activity / Fragment级别的属性,而是作为View扩展属性。 这样,你可以按照你想要的方式来做,假设day1day2包含你想要的视图:

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