【问题标题】:Android onClick() on include view won't let binding包含视图上的Android onClick()不会让绑定
【发布时间】:2019-12-03 17:53:12
【问题描述】:

我有一个单独的布局,我想调用 onClick 并在回调时更新一个字段

<include
    android:onClick="@{() -> viewModel.changeItem(2)}"
    layout="@layout/item"
    app:attr="@{viewModel.title}"
    app:desc="@{viewModel.description}"
    app:active="@{viewModel.isSelected}"
/>

但它返回以下绑定错误:

找不到带有参数的属性“android:onClick”的设置器 在 com.X.databinding.ItemBinding 上键入 lambda。

但我可以绑定其他视图

<TextView
    android:onClick="@{() -> viewModel.changeItem(1)}"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>

【问题讨论】:

  • 你检查过this吗?
  • 我做了,如果在 textView 或 button 等中设置它完全可以工作
  • 我认为问题在这里解决了:enter link description here

标签: java android kotlin mvvm data-binding


【解决方案1】:

我建议你直接从代码中调用 onClick。

在 .xml 中为您的视图设置一个 ID,然后设置如下内容:

val item = findViewById(R.id.your_id) etc.
item.onClick { functionYouWantToCall() }

但是,我不知道这是否可以在 include 布局上设置 ID 或 onClickListener
如果您做不到,只需将您的 include 放入 LinearLayout,然后在其上设置您的 onClick

我以前也在.xml中设置onClicks,但我认为在代码中设置它更有效。
此外,我不知道您是否可以在从 xml 调用的函数中设置参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多