4

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

4

2 回答 2

2

让我们将一个新文件称为“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()}"
于 2018-09-12T19:12:20.333 回答
2

好的,虽然从文档中不清楚,但可以使用自定义设置器完成,如下所示:


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

@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=""/>

于 2015-11-11T23:03:45.143 回答