【问题标题】:Pass another view as parameter in data binding在数据绑定中传递另一个视图作为参数
【发布时间】:2017-03-29 21:04:24
【问题描述】:

我正在尝试将我的 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 中的文本...但这不起作用。

如何将按钮的文本作为参数传递?

感谢任何帮助!

【问题讨论】:

    标签: java android android-databinding


    【解决方案1】:

    为 id-able 生成的成员具有 CamelCase 名称格式。提供给OnClickListener 的视图也是被点击的视图。所以只要随意命名参数并使用正确的“全局”成员。

    android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText())}'
    

    【讨论】:

    • 为什么我无法使用 Android Studio 4.1.2?它不会编译
    • @Sergiob 我建议针对您的具体问题创建一个新问题,包括来自绑定生成器的错误。也可以在这里留下一个链接......
    【解决方案2】:

    如果您使用 Kotlin 进行编码,您可能会想编写以下代码:

    android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.text)}'
    

    它不起作用,因为绑定类是由Java框架生成的。另一个问题是,对于 EditText 视图,您还需要添加对

    的调用

    toString()

    如果你想调用一个以字符串为参数的函数。所以代码是:

    android:onClick='@{(v) -> viewModel.subjectRequest(faqTitleAbout.getText().toString())}'
    

    这就是 Kotlin 和 Android Studio 4.1.2 的工作方式,否则会出现构建错误(......一个奇怪的......)。我不知道这是否会在未来发生变化,或者它与其他版本的行为不同。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 2017-11-17
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多