gpt4 book ai didi

android - 将不同的 ViewModel 传递给包含布局

转载 作者:行者123 更新时间:2023-11-29 22:42:11 25 4
gpt4 key购买 nike

我包括一个传递 View 模型的布局:

<include
layout="@layout/user_login"
app:model="@{model}" />

我的目标是在不同的地方使用这个 include 来传递一个不同的 ViewModel

例如我想在一个地方传递:UserViewModel,在另一个地方传递InformationViewModel。我可以这样做吗?

提前致谢

最佳答案

这里是组件类

class SomeComponent(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs) {

private var mBinding: SomeLayoutBinding? = null

init {
if (isInEditMode) {
val view = LayoutInflater.from(context).inflate(R.layout.some_layout, this, false)
addView(view)
} else {
mBinding = SomeLayoutBinding.inflate(LayoutInflater.from(context), this, true)
}
}

fun setVm(vm: InformationViewModel) {
mBinding!!.vm = vm
mBinding!!.executePendingBindings()
}
}

这是组件的布局

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable
name="vm"
type="yourpackage.InformationViewModel" />
</data>

</layout>

这是你设置vm的方式

 <yourpackage.SomeComponent
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:vm="@{item}" />

关于android - 将不同的 ViewModel 传递给包含布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com