gpt4 book ai didi

android - Kotlin 合成扩展和几个包含相同的布局

转载 作者:IT老高 更新时间:2023-10-28 13:34:34 27 4
gpt4 key购买 nike

如果我有如下布局,如何使用 kotlin 合成扩展访问 View :

文件: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"

但我正在寻找好的解决方案。 :)

最佳答案

作为一般经验法则,您不应该构建最终具有相同 id 的多个 View 的布局 - 正是出于这个原因。

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

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

你可以导入

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

这将导入 View ,而不是作为 Activity/Fragment 级别的属性,而是作为 View 的扩展属性。这样,您可以按照自己的方式进行操作,假设 day1day2 包含您想要的 View :

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

关于android - Kotlin 合成扩展和几个包含相同的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com