如何在我的视图中绑定ObservableList
的大小?
我在我的Android应用程序中使用带有ObservableList
的数据绑定库,如下所示:
// ViewModel
class ViewModel {
...
public final ObservableList<Item> items = new ObservableList<>()
...
}
和我的观点
// 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()
,但这不起作用。我怎么能这样做?
答案 0 :(得分:2)
在Dany Minassians的帮助下,我找到了以下两个解决方案:
items.size()
的使用有效。问题是,它返回一个Integer,因此必须转换为android:text
元素的String。这可以使用String.valueOf()
方法完成。
<layout>
<data>
<variable name="viewmodel" type="com.myapp.ViewModel" />
</data>
<TextView
...
android:text="@{String.valueOf(viewmodel.items.size())}"
/>
</layout>
viewmodel可以定义像sizeOfList(List list)
这样的方法,可以在视图中使用,如下所示:
<layout>
<data>
<variable name="viewmodel" type="com.myapp.ViewModel" />
</data>
<TextView
...
android:text="@{String.valueOf(viewmodel.sizeOfList(viewmodel.items))}"
/>
</layout>
答案 1 :(得分:0)
<强>不正确强>
<?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根据https://developer.android.com/reference/android/databinding/ObservableList.html从List继承size()函数 并根据 https://developer.android.com/topic/libraries/data-binding/index.html#method_references 引用您需要使用“::”
的方法**正确回答此问题并明确说明**
如果这不起作用...在模型中创建一个方法getListSize()并使用@ {viewmodel :: getListSize()}返回列表的大小!