gpt4 book ai didi

android - 应用数据绑定(bind)适配器以包含标签

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:45 24 4
gpt4 key购买 nike

我在我的项目中使用数据绑定(bind),我有一个用于从 View 模型设置可见性条件的数据绑定(bind):

<View
app:visibilityCondition="@{viewModel.showingItems}" />

一切正常,但是当我想像这样在包含标签上使用它时突然:

<include
layout="@layout/my_include_layout
app:visibilityCondition="@{viewModel.showingItems}" />

它没有构建,出现以下错误:

e: [kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors. Cannot find the setter for attribute 'app:visibilityCondition' with parameter type boolean on com.example.CustomBinding.

由于 CustomBinding 类实际上并没有从 View 扩展,而是从 ViewDataBinding 扩展,所以看起来我没有办法做这个。

有没有办法解决这个问题,或者我是否被迫以编程方式设置此包含布局的可见性?我知道这会起作用,但如果可能的话,我真的很想将它保留在数据绑定(bind)中。

最佳答案

显然,目前您无法将 BindingAdaptersincluded 布局元素一起使用,但您可以在包含的布局中传递变量(供它们处理)。

什么 Keshav Aggarwal建议差不多就可以了。您必须included 布局中传递数据,但是在布局中暴露整个 ViewModel 是不必要的,而且有点不雅观。 p>

  1. 修改my_include_layout,添加一个带有绑定(bind)参数的变量。
<layout>
<data>
<variable
name="visibilityCondition"
type="<the_type_of_the_visibility>"/>
</data>
<View
app:visibilityCondition="@{visibilityCondition}"/>
</layout>
  1. 使用 bind 命名空间在 included 布局中传递可见性参数:
<include
layout="@layout/my_include_layout
bind:visibilityCondition="@{viewModel.showingItems}" />

关于android - 应用数据绑定(bind)适配器以包含标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50722783/

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