我是Android中MVVM的新手。
是否有办法添加组布局的子视图,如芯片组、无线电组?
假设有来自服务器的此类数据。
[name: 'coffee', size: 'tall', 'grande', 'venti' ...,
name: 'pizza', size: 'small', 'medium', 'large' ...]
以下是我目前所做的工作:
主XML
itemViewModels
是在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来实现它吗?
1条答案
按热度按时间1zmg4dgp1#
因此,您在布局资源中有您的
list_view_item
。在这个项目布局中,有一个芯片组,它将显示来自对象的列表。示例User. nicknames我猜在这个list_view_item布局中,您已经定义了对象变量。
现在,创建一个绑定适配器,您可以通过创建一个新的kotlin文件来完成,该文件将包含它将占用chipGroup的所有适配器和要显示的项列表。
接下来,您要做的是返回chipGroup布局并使用适配器。
你可以阅读更多关于绑定适配器here