android - 使用数据绑定时动态填充 LinearLayout 包括
问题描述
我有一个 ViewModel Group
,其中包含不同数量的子 ViewModel,Item
s。它还列出了这些项目是否应该可见,看起来类似于:
class Group(
val items: List<Item>
) : ViewModel() {
val visibleItems = List(items.size) { ObservableBoolean(false) }
}
然后我的布局绑定并显示Item
s,并允许应用程序的其他区域切换它们的可见性:
<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
解决方案
推荐阅读
- bash - 递归打印和删除匹配两种模式之一的文件
- android - 如何使用 ViewPager 使 ScrollView 中的 Stickable TabView 反应原生?
- php - 从 SimpleXMLElement 获取变量
- r - 使用循环组合向量
- netty - 如何在 Netty 4 中添加自定义加密?
- c++ - Rcpp 函数 - SegFault 错误和内存管理
- amazon-web-services - 如何解决 terraform 错误子网消息?
- r - R中的Highcharter和Flexdashboard不一致
- c# - Razor 页面 - EF 实体/表关系
- asp.net - 从不同线程asp.net核心中的URL加载图像