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

时间:2015-11-11 21:39:39

标签: android android-databinding

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

这样的东西

2 个答案:

答案 0 :(得分:1)

好的,虽然docs中不清楚,但可以使用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=""/>

中模型变量的名称

答案 1 :(得分:1)

我们叫一个新文件“ 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.isEmpty()}"