在数据绑定中将另一个视图作为参数传递
Pass another view as parameter in data binding
我正在尝试将我的 xml 的另一个视图作为 Google 数据绑定中方法的参数...像这样:
<LinearLayout
android:id="@+id/faq_subject_about_ego"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_faq_btn"
android:orientation="horizontal"
android:layout_marginBottom="20dp"
android:padding="4dp"
android:gravity="center"
android:onClick='@{(faq_title_about) -> viewModel.subjectRequest(faq_title_about.getText())}'>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_faq"
android:layout_marginRight="8dp"
android:clickable="false" />
<ebanx.com.ego.utils.custom_extension.CustomButtonBold
android:id="@+id/faq_title_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button_FAQ"
android:text="@string/btn_about_ego"
android:clickable="false" />
</LinearLayout>
我需要 CustomButtonBold 中的文本...但这不起作用。
如何将按钮的文本作为参数传递?
感谢任何帮助!
为 id-able 生成的成员具有 CamelCase 名称格式。提供给 OnClickListener
的视图也是被单击的视图。所以随便命名参数并使用正确的 "global" 成员。
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText())}'
如果您使用 Kotlin 编写代码,您可能会想编写以下内容:
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.text)}'
它不会起作用,因为绑定 class 是由 Java 中的框架生成的。另一个问题是,对于 EditText 视图,您还需要添加对
的调用
toString()
如果你想调用一个以字符串为参数的函数。所以代码将是:
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText().toString())}'
这就是它与 Kotlin 和 Android Studio 4.1.2 一起工作的方式,否则你会得到一个构建错误(......一个奇怪的......)。我不知道将来是否会改变,或者它与其他版本有不同的行为。
我正在尝试将我的 xml 的另一个视图作为 Google 数据绑定中方法的参数...像这样:
<LinearLayout
android:id="@+id/faq_subject_about_ego"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_faq_btn"
android:orientation="horizontal"
android:layout_marginBottom="20dp"
android:padding="4dp"
android:gravity="center"
android:onClick='@{(faq_title_about) -> viewModel.subjectRequest(faq_title_about.getText())}'>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_faq"
android:layout_marginRight="8dp"
android:clickable="false" />
<ebanx.com.ego.utils.custom_extension.CustomButtonBold
android:id="@+id/faq_title_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button_FAQ"
android:text="@string/btn_about_ego"
android:clickable="false" />
</LinearLayout>
我需要 CustomButtonBold 中的文本...但这不起作用。
如何将按钮的文本作为参数传递?
感谢任何帮助!
为 id-able 生成的成员具有 CamelCase 名称格式。提供给 OnClickListener
的视图也是被单击的视图。所以随便命名参数并使用正确的 "global" 成员。
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText())}'
如果您使用 Kotlin 编写代码,您可能会想编写以下内容:
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.text)}'
它不会起作用,因为绑定 class 是由 Java 中的框架生成的。另一个问题是,对于 EditText 视图,您还需要添加对
的调用toString()
如果你想调用一个以字符串为参数的函数。所以代码将是:
android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText().toString())}'
这就是它与 Kotlin 和 Android Studio 4.1.2 一起工作的方式,否则你会得到一个构建错误(......一个奇怪的......)。我不知道将来是否会改变,或者它与其他版本有不同的行为。