首页 > 解决方案 > 使用数据绑定时动态填充 LinearLayout 包括

问题描述

我有一个 ViewModel Group,其中包含不同数量的子 ViewModel,Items。它还列出了这些项目是否应该可见,看起来类似于:

class Group(
    val items: List<Item>
) : ViewModel() {

  val visibleItems = List(items.size) { ObservableBoolean(false) }

}

然后我的布局绑定并显示Items,并允许应用程序的其他区域切换它们的可见性:

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >

        <include
            layout="@layout/item"
            android:visibility="@{viewModel.visibleItems[0] ? View.VISIBLE : View.GONE}"
            bind:viewModel="@{viewModel.items[0]}"
            />

        <include
            layout="@layout/item"
            android:visibility="@{viewModel.visibleItems[1] ? View.VISIBLE : View.GONE}"
            bind:viewModel="@{viewModel.items[1]}"
            />

        ... etc ...

这种方法有效,但缺点是 LinearLayout 只能显示 XML 中已定义的项目。

我想使用类似 a 的东西来根据(总是相同的大小)BindingAdapter的大小自动填充项目。我已经看到了 RecyclerView 的解决方案,但是因为我有一个 LinearLayout 这不是很有帮助。viewModel.items.visibleItems

标签: androidandroid-layoutkotlinmvvmandroid-databinding

解决方案


推荐阅读