如何在 Kotlin-Multiplatform 中正确使用双向绑定?
How to properly use two way binding in Kotlin-Multiplatform?
我正在尝试使用 String
变量将其绑定到我的视图中。
当我使用带有 String
属性 的模型对象时,它运行良好。但是如果我单独使用 String
变量,它只适用于一种绑定方式。
视图模型:
class SampleModel(var data : String = "")
var myModel : SampleModel = SampleModel()
var myVariable : String = ""
XML:
<data>
<variable
name="model"
type="MyViewModel.SampleModel" />
<variable
name="variable"
type="String" />
</data>
<!-- Two way works fine -->
<EditText
android:text="@={model.data}"/>
<!-- Only one way works -->
<EditText
android:text="@={variable}"/>
SampleModel
中的字符串适用于双向绑定,但 String
变量不适用。
我认为是因为xml中导入的String
是java.lang.String
,而模型中的String
是kotlin.String
。而且我无法在 xml.
中使用 kotlin.String
有解决办法吗?或者在 Kotlin-Multiplatform
项目中是否有任何正确的双向绑定方法?
您似乎在 xml 文件中添加了错误的变量。在您的视图模型中,您创建了一个名为 myVariable
且类型为 String
的变量,但在您的 xml
文件中,您正在此处创建另一个变量:-
<variable
name="variable"
type="String" />
所以这两个变量是不同的。您不需要在 xml
文件中导入任何内容,只需创建一个您已经在此处完成的 viewModel
变量 :-
<variable
name="model"
type="MyViewModel.SampleModel" />
现在只需像这样使用它:- android:text="@={model. myVariable}"
UPDATE :- 在此您需要使用我在您的 viewModel
中创建的 String
变量,因为它使用了 kotlin.String
在 xml
中你有 java.lang.String
。您可以简单地使用在 viewModel
中创建的变量,例如:- android:text="@={viewModel.yourVariable}"
我正在尝试使用 String
变量将其绑定到我的视图中。
当我使用带有 String
属性 的模型对象时,它运行良好。但是如果我单独使用 String
变量,它只适用于一种绑定方式。
视图模型:
class SampleModel(var data : String = "")
var myModel : SampleModel = SampleModel()
var myVariable : String = ""
XML:
<data>
<variable
name="model"
type="MyViewModel.SampleModel" />
<variable
name="variable"
type="String" />
</data>
<!-- Two way works fine -->
<EditText
android:text="@={model.data}"/>
<!-- Only one way works -->
<EditText
android:text="@={variable}"/>
SampleModel
中的字符串适用于双向绑定,但 String
变量不适用。
我认为是因为xml中导入的String
是java.lang.String
,而模型中的String
是kotlin.String
。而且我无法在 xml.
kotlin.String
有解决办法吗?或者在 Kotlin-Multiplatform
项目中是否有任何正确的双向绑定方法?
您似乎在 xml 文件中添加了错误的变量。在您的视图模型中,您创建了一个名为 myVariable
且类型为 String
的变量,但在您的 xml
文件中,您正在此处创建另一个变量:-
<variable
name="variable"
type="String" />
所以这两个变量是不同的。您不需要在 xml
文件中导入任何内容,只需创建一个您已经在此处完成的 viewModel
变量 :-
<variable
name="model"
type="MyViewModel.SampleModel" />
现在只需像这样使用它:- android:text="@={model. myVariable}"
UPDATE :- 在此您需要使用我在您的 viewModel
中创建的 String
变量,因为它使用了 kotlin.String
在 xml
中你有 java.lang.String
。您可以简单地使用在 viewModel
中创建的变量,例如:- android:text="@={viewModel.yourVariable}"