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