首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin-Multiplatform中正确使用双向绑定?

如何在Kotlin-Multiplatform中正确使用双向绑定?
EN

Stack Overflow用户
提问于 2021-01-09 12:31:22
回答 1查看 290关注 0票数 0

我试图使用一个String变量将其绑定到我的视图中。当我使用带有String属性的模型对象时,它工作得很好。但是,如果仅使用String变量,它只适用于单向绑定。

ViewModel:

代码语言:javascript
复制
class SampleModel(var data : String = "")

var myModel : SampleModel = SampleModel()
var myVariable : String = ""

XML:

代码语言:javascript
复制
<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中导入的Stringjava.lang.String,但是模型中的Stringkotlin.String。而且我无法在xml中使用kotlin.String

有什么办法解决这个问题吗?或者在Kotlin-Multiplatform项目中有任何正确的双向绑定方式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 17:38:17

看起来您在xml文件中添加了一个错误的变量。在您的视图模型中,您已经创建了一个名为myVariable类型的String变量,但是在您的xml文件中,您在这里创建了另一个变量:-

代码语言:javascript
复制
 <variable
    name="variable"
    type="String" />

所以这两个变量是不同的。您不需要在xml文件中导入任何内容,只需创建一个viewModel变量,您已经在这里完成了以下操作:-

代码语言:javascript
复制
<variable
    name="model"
    type="MyViewModel.SampleModel" />

现在只需使用如下所示:- android:text="@={model. myVariable}"

UPDATE :-在这里,您需要使用我在viewModel中创建的String变量,因为它使用了kotlin.String,而在xml中则使用了java.lang.String。您可以简单地使用在viewModel中为例如:- android:text="@={viewModel.yourVariable}"创建的变量

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65642664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档