数据绑定自定义项列表

时间:2016-05-18 04:45:30

标签: android android-databinding

如何将自定义项列表绑定到ListView或RecyclerView?仅使用Android DEFAULT DataBinding(无外部库)

<layout>
    <data>
        <import type="java.util.List"/>
        <variable name="listOfString" type="List&lt;String>"/>
    </data>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:?????="@{listOfString}/>  <!--Like we have ItemsSource in WPF-->

</layout>

我来自WPF背景,其中有一个ItemTemplate选项。使用ItemTemplate,您可以纯粹通过XML将数据映射到视图。类似的东西:

<ListView ItemsSource="{Binding Path=UserCollection}">
  <ListView.ItemTemplate>
    <!--Populate template with each user data-->
    <DataTemplate>
      <WrapPanel>
        <!--Bind to user.Name-->
        <TextBlock Text="{Binding Name}" FontWeight="Bold" />
        <TextBlock Text="{Binding Age}" FontWeight="Bold" />
        <TextBlock Text="{Binding Mail}" />
      </WrapPanel>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

2 个答案:

答案 0 :(得分:2)

如果这可以帮助某人,在我看来,您正在寻找的是来自DataBinding功能的Binding adadpters。

更多信息可以在这里找到: documentation

这将允许您定义可在xml中使用的自定义属性,并传递所需项目的列表。

@BindingAdapter("nameOfProperty")
public static void loadImage(ListView listView, List listOfString) {
  // do the actual logic here
}

然后可以在app:nameOfPropery="@{listOfString}"之类的xml中使用

答案 1 :(得分:1)

查看此库:https://github.com/evant/binding-collection-adapter

该库允许将自定义对象的ObservableList绑定到RecyclerView。