如何根据列表是否为空更改视图的可见性

How can I change a View's visibility based on whether a list is empty or not

我在使用数据绑定库绑定到布局的模型中有一个 List。如何根据列表的 isEmpty() 条件更改 View 的可见性?像 android:visibility="@{model.list.isEmpty() ? View.INVISIBLE : View.VISIBLE}"

好的,虽然从docs, it can be done using custom setters中看不清楚如下:


在我的模型中,我必须声明

@BindingAdapter("android:visibility")
public static void setVisibility(View view, Model model) {

        view.setVisibility(model.getList().isEmpty() ? View.INVISIBLE: View.VISIBLE);
}

然后,在布局中

 android:visibility="@{model}"

其中 model<variable name=""/>

中模型变量的名称

让我们调用一个新文件 "BindingAdapters",因为您可能会在其他地方使用它。

object BindingAdapters {
    @JvmStatic
    @BindingAdapter("visibleGone")
    fun showHide(view: View, show: Boolean) {
        view.visibility = if (show) View.VISIBLE else View.GONE
    }
}

在 XML 上,您只需执行以下操作:

app:visibleGone="@{viewModel.list.isNotEmpty()}"