gpt4 book ai didi

android - DataBinding 导致 Kotlin 编译器错误

转载 作者:行者123 更新时间:2023-11-29 16:33:40 25 4
gpt4 key购买 nike

我在 Bitbucket 中有以下分支:https://bitbucket.org/ali-rezaei/tmdb/src/dataBinding/

我在构建项目时遇到以下 Kotlin 编译器 错误:

e: [kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.

错误与:

有关
app:visibleGone="@{isLoaded}"

在以下布局中:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable
name="isLoaded"
type="boolean" />
</data>

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.MainActivity">

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:visibleGone="@{isLoaded}" />

</android.support.v4.widget.SwipeRefreshLayout>

<include
layout="@layout/network_state_item"
app:visibleGone="@{!isLoaded}" />

</FrameLayout>

</layout>

如果你能帮助我,我将不胜感激。

最佳答案

我要做的改变是:这里

<variable
name="isLoaded"
type="boolean" />

而不是传递 boolean我会传递您的 VM 实例

   <variable
name="vm"
type="com.sample.android.tmdb.ui.MovieViewModel" />

在你的 fragment 中,你做

    mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false)
mBinding?.setVariable(BR.vm, mViewModel)
mBinding?.setLifecycleOwner(this)

这样,您的 VM 就连接到 fragment 的生命周期。

声明一个方法

  @BindingAdapter("visibleGone")
fun View.visibleGone(visible: Boolean) {
setVisibility(if (visible) View.VISIBLE else View.GONE)
}

声明一个LiveData<Boolean>你的变数MovieViewModel并将其连接到您的布局中。例如。

 val loading: LiveData<Boolean>

然后在你的布局中你可以拥有

       <android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:visibleGone="@{!safeUnbox(vm.loading)}" />

关于android - DataBinding 导致 Kotlin 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53278290/

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