gpt4 book ai didi

android - 数据绑定(bind)的布局可见性默认值不起作用

转载 作者:行者123 更新时间:2023-12-05 00:06:04 27 4
gpt4 key购买 nike

我正在尝试使用数据绑定(bind)设置布局可见性。从数据库加载数据时,我在 XML 中设置的默认可见性不起作用。这是布局文件

<RelativeLayout
android:id="@+id/error_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="@{homeViewModel.comfortErrorVisibility, default=invisible}"/>

View 模型是这样的

public class HomeViewModel extends BaseObservable {

private ObservableField<String> comfortErrorMessage = new ObservableField<>();

public HomeViewModel(){
validateSpace();
}


@Bindable
public int getComfortErrorVisibility(){
// change the visibility based on error message
return TextUtils.isEmpty(comfortErrorMessage.get()) ? View.VISIBLE : View.INVISIBLE;
}

private void validateSpace(){
//some business logic to set the comfrotErrorMessage
}
}

我在这里遗漏了什么吗?默认情况下,我想将错误布局的可见性设置为不可见。但它默认显示。

最佳答案

Afaik,default 仅用于 Android studio 的预览,在运行时不会执行任何操作。找不到官方文档了,但是有很多关于它的 SO 帖子。

据我所知,当您设置绑定(bind)时,数据绑定(bind)框架将调用 getComfortErrorVisibility 以获取错误消息的可见性。您的条件已设置为当错误消息为空或 null 时可见性可见:

TextUtils.isEmpty(comfortErrorMessage.get()) ? View.VISIBLE : View.INVISIBLE;

因为您的 comfortErrorMessageObservableField() 一样被初始化,它的初始值将为 null,因此您首先看到的是一个可见的错误字段。

也许您应该更改可见性条件?

关于android - 数据绑定(bind)的布局可见性默认值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808781/

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