如何在膨胀布局时循环数据?

How to loop on data while inflating layouts?

每次需要循环数据以重复布局时,我是否必须依赖 ListView/Recycler 视图?

对于涉及 scroll/performance 的长数据列表,我完全理解它,但是假设我确定我只有 0...3 个最大项目并且需要以非常简单的单行显示- 每个布局(1 个图像,1 个文本视图 + 按钮).. 没有比使用适配器更简单的模式吗?

似乎有点矫枉过正(处理我需要遍历小列表的屏幕的每个小部分都很痛苦)。

使用组件架构(数据绑定)时还有哪些其他选项? 手动膨胀我的布局?在视图模型中?分段?我是否需要专门为此子布局创建另一个 viewModel?

谢谢

我最近遇到了类似的问题,但我的问题是嵌套列表,即我需要在回收器视图中扩充另一个列表。这是我如何处理的一个最小示例。

LinearLayout 添加到您的布局 XML 文件:

<LinearLayout
    android:id="@+id/smallList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:list="@{viewModel.yourList}" />

创建一个绑定适配器,您可以在其中填充项目。像这样:

@BindingAdapter("app:list")
fun setList(layout: LinearLayout, yourList: List<ListItemModel>) {
    layout.removeAllViews() // Remove previous items if your list does change    

    for (listItem in yourList) {
        ListItemBinding.inflate( // inflate your list item
            LayoutInflater.from(layout.context),
            layout, // pass your LinearLayout as root
            true // attachToRoot is true so that the inflated view is added to the LinearLayout
        ).apply {
            // set your binding variables
            this.listItem = listItem 
        }
    }
}

注意:这是解决问题的最小示例,因为实际数据和功能未知。您可能想要:

  1. 将点击侦听器变量添加到您的列表项 XML 文件并进行类似设置。
  2. 如果要重复使用视图,请为该视图创建一个自定义视图,并在那里编写绑定适配器。