【发布时间】:2022-11-28 01:41:51
【问题描述】:
我是 Android 中 MVVM 的新手。
有没有办法添加组布局的子视图,例如 chipgroup、radiogroup?
假设有来自服务器的这种数据。
[name: 'coffee', size: 'tall', 'grande', 'venti' ...,
name: 'pizza', size: 'small', 'medium', 'large' ...]
这是我到目前为止所做的:
主要的XML itemViewModels 是一个自定义的 BindingAdapter,用于绑定 RecyclerViewAdapter 和 listItems
<androidx.recyclerview.widget.RecyclerView
app:itemViewModels="@{vm.listItem}"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>
视图模型
val listItem = MutableLiveData<List<ItemViewModel>>(...)
listItem= ... // get data and convert into view data blabla
项目视图模型
class ItemViewModel() {
val name:String
val size:List<String>
}
项目 XML
<TextView android:text="@{itemViewModel.data.name}" .../>
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroupSizeOption">
<!-- I would like to add child views of chipgroup here -->
</com.google.android.material.chip.ChipGroup>
在 MVC 模式中,我会这样写
binding.chipGroupSizeOption.removeAllViews()
SizeOptionsDataFromServer.forEach { x->
val chip= (LayoutInflater.from(context).inflate(R.layout.chip_item,
binding.chipGroupSizeOption, false) as Chip)
.apply {
text = x.data.name
id = ViewCompat.generateViewId()
}
}
binding.chipGroupSizeOption.addView(chip)
但是在 MVVM 中,是否可以通过数据绑定添加子视图?
我应该使用 BindingAdapter 来实现吗?
【问题讨论】:
标签: android kotlin mvvm data-binding