我试图使用一个String变量将其绑定到我的视图中。当我使用带有String属性的模型对象时,它工作得很好。但是,如果仅使用String变量,它只适用于单向绑定。
ViewModel:
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项目中有任何正确的双向绑定方式吗?
发布于 2021-02-03 17:38:17
看起来您在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}"创建的变量
https://stackoverflow.com/questions/65642664
复制相似问题