Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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数据绑定中ObservableList的绑定大小_Android_Data Binding_Kotlin - Fatal编程技术网

Android数据绑定中ObservableList的绑定大小

Android数据绑定中ObservableList的绑定大小,android,data-binding,kotlin,Android,Data Binding,Kotlin,如何在我的视图中绑定可观察列表的大小? 在我的android应用程序中,我正在使用带有可观察列表的数据绑定库,如下所示: // ViewModel class ViewModel { ... public final ObservableList<Item> items = new ObservableList<>() ... } <layout> <data> <variable name=

如何在我的视图中绑定
可观察列表的大小?
在我的android应用程序中,我正在使用带有
可观察列表的数据绑定库,如下所示:

// ViewModel
class ViewModel {
    ...
    public final ObservableList<Item> items = new ObservableList<>()
    ...
}
<layout>
    <data>
        <variable name="viewmodel" type="com.myapp.ViewModel" />
    </data>

    <TextView
        ...
        android:text="@{String.valueOf(viewmodel.sizeOfList(viewmodel.items))}"
    />
</layout>
//视图模型
类视图模型{
...
公共最终可观察列表项=新的可观察列表()
...
}
我的看法呢

// View
<layout>
    <data>
        <variable name="viewmodel" type="com.myapp.ViewModel" />
    </data>

    <TextView
        ...
        android:text="@{viewmodel.items.???}"
    />
</layout>
//查看

在视图
TextView
中,我想显示项目列表的大小。我试图使用android:text=“viewmodel.items.size
viewmodel.items.size()
,但这不起作用。我该怎么做?

不正确

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
 <data>
   <variable name="viewmodel" type="com.myapp.ViewModel "/>
</data>
<LinearLayout
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <TextView android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@{viewmodel.items::size()}"/>
</LinearLayout>
</layout>

我想你只是忘了{::}。。。 这样做是因为ObservableList根据 根据 要引用您需要使用的方法,请执行以下操作:

**请在此更正答案,并在下面更清楚地说明**


如果不起作用,请在模型getListSize()中创建一个方法,并使用@{viewmodel::getListSize()}返回列表的大小!

不正确

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
 <data>
   <variable name="viewmodel" type="com.myapp.ViewModel "/>
</data>
<LinearLayout
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <TextView android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@{viewmodel.items::size()}"/>
</LinearLayout>
</layout>

我想你只是忘了{::}。。。 这样做是因为ObservableList根据 根据 要引用您需要使用的方法,请执行以下操作:

**请在此更正答案,并在下面更清楚地说明**


如果不起作用…在模型getListSize()中创建一个方法,并使用@{viewmodel::getListSize()}返回列表的大小!

在Dany Minassians的帮助下,我找到了以下两种解决方案:

直接size()方法
items.size()
的用法是有效的。问题是,它返回一个整数,因此必须将
android:text
元素转换为字符串。这可以通过
String.valueOf()
方法完成

<layout>
    <data>
        <variable name="viewmodel" type="com.myapp.ViewModel" />
    </data>

    <TextView
        ...
        android:text="@{String.valueOf(viewmodel.items.size())}"
    />
</layout>

在Dany Minassian回答的帮助下,我找到了以下两种解决方案:

直接size()方法
items.size()
的用法是有效的。问题是,它返回一个整数,因此必须将
android:text
元素转换为字符串。这可以通过
String.valueOf()
方法完成

<layout>
    <data>
        <variable name="viewmodel" type="com.myapp.ViewModel" />
    </data>

    <TextView
        ...
        android:text="@{String.valueOf(viewmodel.items.size())}"
    />
</layout>

感谢您的提示,但
@{:}
不是anwer。用于在“onClick”等事件上执行的::binds方法。尽管如此,`{viewmodel.getListSize()}方法仍然有效(但必须使用“.”而不是“:”)。感谢您的提示,但
@{:}
不是anwer。用于在“onClick”等事件上执行的::binds方法“。尽管如此,`@{viewmodel.getListSize()}方法仍然有效(但必须使用“.”而不是“:”)。