【发布时间】:2021-02-19 15:27:42
【问题描述】:
我刚刚进入 android MVVM。在我的项目中,我有 3 个 TextView,它们将作为一个广播组工作。
在上图中,将一次选择任何选项。
用于此的 XML 是
<data>
<variable
name="viewModel"
type="com.builders.aimsfinance.ui.common.newcandidate.NewCandidateViewModel" />
</data>
**** Some XML *****
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/candidateSite"
android:text="Site"
android:onClick="@{()-> viewModel.setCandidateType()}"
android:textAlignment="center"
android:padding="5dp"
android:layout_margin="5dp"
android:textColor="@color/purple_700"
android:background="@drawable/big_rounded_rectangle"
android:backgroundTint="@color/purple_700"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/candidateShop"
android:text="Shop"
android:onClick="@{()-> viewModel.setCandidateType()}"
android:textAlignment="center"
android:padding="5dp"
android:layout_margin="5dp"
android:textColor="@color/purple_700"
android:background="@drawable/big_rounded_rectangle"
android:backgroundTint="@color/purple_700"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/candidateEmployee"
android:text="Employee"
android:onClick="@{()-> viewModel.setCandidateType()}"
android:textAlignment="center"
android:padding="5dp"
android:layout_margin="5dp"
android:textColor="@color/purple_700"
android:background="@drawable/big_rounded_rectangle"
android:backgroundTint="@color/purple_700"/>
**** Some XML *****
在我的 ViewModel 中,我实现了以下功能
class NewCandidateViewModel() : ViewModel() {
var typ = MutableLiveData<Int>()
fun setCandidateType(type: Int) {
typ.value = type
}
}
在这里,我为所有 TextViews 设置了一个公共处理函数 viewModel.setCandidateType(),并且我必须在单击每个 TextViews 时传递一个特定的整数。传递像viewModel.setCandidateType(1) 这样的硬编码值可以正常工作。但我认为这不是一个合适的解决方案。
我的疑问是,如何将这种类型的自定义值从 XML 传递给这个处理函数?这样做的正确方法是什么?
【问题讨论】:
标签: android mvvm data-binding