【发布时间】:2020-12-07 10:07:07
【问题描述】:
我有 3 个文件(Activity、ViewModel、XML)
我使用 MVVM 并将 XML 连接到 ViewModel。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.example.MainViewModel"/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/priceTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@={viewModel.price}"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
ViewModel.class
open class MainViewModel : ViewModel() {
val price = MutableLiveData<String>()
val priceTextViewWidth = MutableLiveData<Int>()
}
在活动中,我将 XML 连接到视图模型
binding.viewModel = viewModel
我可以在 View Model 中通过更改价格变量来更新 Textview,但 我需要将 TextView 宽度传递给 ViewModel 中的 priceTextViewWidth。
【问题讨论】:
-
I need to pass TextView width to priceTextViewWidth in ViewModel.所以你想将 ViewModel 中的变量设置为等于 View 的宽度?我能问为什么吗? this 也有帮助吗? -
因为在 ViewModel 中我需要一个逻辑代码的宽度文本视图
-
我认为如果不涉及 Activity,您将无法做到这一点。需要它的逻辑是什么?令人惊讶的是,某些内容的显示方式会影响业务逻辑
标签: java android kotlin data-binding viewmodel