Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Kotlin多平台中正确使用双向绑定?_Android_Kotlin_Data Binding_Kotlin Multiplatform_2 Way Object Databinding - Fatal编程技术网

Android 如何在Kotlin多平台中正确使用双向绑定?

Android 如何在Kotlin多平台中正确使用双向绑定?,android,kotlin,data-binding,kotlin-multiplatform,2-way-object-databinding,Android,Kotlin,Data Binding,Kotlin Multiplatform,2 Way Object Databinding,我试图使用字符串变量将其绑定到我的视图中。 当我使用带有String属性的模型对象时,它工作得很好。但是如果我单独使用字符串变量,它只适用于单向绑定 视图模型: class SampleModel(var data : String = "") var myModel : SampleModel = SampleModel() var myVariable : String = "" XML: SampleModel中的字符串可以很好地进行双向绑定

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

视图模型:

class SampleModel(var data : String = "")

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


SampleModel
中的字符串可以很好地进行双向绑定,但是
string
变量不能

我认为这是因为xml中导入的
String
java.lang.String
,而模型中的
String
kotlin.String
。我无法在xml中使用
kotlin.String


有什么解决办法吗?或者在
Kotlin Multiplatform
项目中有没有合适的双向绑定方式?

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

 <variable
    name="variable"
    type="String" />
现在只需像这样使用:-
android:text=“@={model.myVariable}”


更新:-在这里,您需要使用
字符串
变量,我在您的
视图模型
中创建了该变量,因为它使用了
kotlin.String
,在
xml
中您有
java.lang.String
。您只需使用在
viewModel
中创建的变量,例如:-
android:text=“@={viewModel.yourVariable}”
看起来您在xml文件中添加了错误的变量。在视图模型中,您已经创建了一个名为
myVariable
String
类型的变量,但在
xml
文件中,您在此处又创建了一个变量:-

 <variable
    name="variable"
    type="String" />
现在只需像这样使用:-
android:text=“@={model.myVariable}”


更新:-在这里,您需要使用
字符串
变量,我在您的
视图模型
中创建了该变量,因为它使用了
kotlin.String
,在
xml
中您有
java.lang.String
。您可以简单地使用在
viewModel
中创建的变量,例如:-
android:text=“@={viewModel.yourVariable}”

我刚才省略了链接
viewModel
xml
的部分,如下所示:
binding.setVariable(BR.model,viewModel.myModel)
binding.setVariable(BR.variable,viewmodel.myVariable)
。正如我在问题中所说,两种方式都是单向绑定。因此链接没有问题。另外,您提到的第二部分不是
viewmodel
,它是
SimpleModel
类型的
viewmodel
中的一个变量。我也尝试了普通字符串,它可以双向绑定。您也不知道't要设置不同的变量,您只需将viewModel类绑定为例如:-
binding.setVariable(BR.viewModel,viewModel)
。然后在xml中与变量一起使用它,如
viewModel。yourStringVariable
,应该可以很好地工作。你是对的。访问在Kotlin类中创建的
字符串
可以很好地进行双向绑定。就像我在
viewModel
中创建并在
xml
中使用的类一样。因为它使用
kotlin.String
而不是
java.lang.String
。看起来没有办法使
java.lang.String
成为可绑定的。请编辑您的答案,以便我可以向上投票。更新了我的答案。请接受并向上投票,以便其他人可以轻松找到它。我只是省略了链接
viewmodel
xm的部分l
如下:
binding.setVariable(BR.model,viewmodel.myModel)
binding.setVariable(BR.variable,viewmodel.myVariable)
。正如我在问题中所说,两种方式都是单向绑定。因此链接没有问题。另外,您提到的第二部分不是
viewmodel
,它是
SimpleModel
类型的
viewmodel
中的一个变量。我也尝试了普通字符串,它可以双向绑定。您也不知道't要设置不同的变量,您只需将viewModel类绑定为例如:-
binding.setVariable(BR.viewModel,viewModel)
。然后在xml中与变量一起使用它,如
viewModel。yourStringVariable
,应该可以很好地工作。你是对的。访问在Kotlin类中创建的
字符串
可以很好地进行双向绑定。就像我在
viewModel
中创建并在
xml
中使用的类一样。因为它使用用
kotlin.String
代替
java.lang.String
。似乎没有办法使
java.lang.String
成为可绑定的。请编辑您的答案,以便我可以对其进行升级投票。更新了我的答案。请接受并升级投票,以便其他人可以轻松找到它。
<variable
    name="model"
    type="MyViewModel.SampleModel" />