如何使用Android数据绑定实现循环?

如何使用Android数据绑定实现循环?,android,mvvm,knockout.js,android-databinding,Android,Mvvm,Knockout.js,Android Databinding,大多数流行的MVVM框架允许对列表类型属性进行某种循环。例如,击倒赛有两种。它允许您在list属性的元素之间循环,并且对于每个元素,foreach循环中包含的标记都是重复的。在副本内部,当前元素用作数据绑定的上下文 我在Android中寻找类似的东西,但我只看到了将列表绑定到特定ui元素的可能性。但这在声明性方面是不好的,因为我需要在代码中创建UI元素 有没有办法使用Android的数据绑定功能来模拟类似的东西?如果没有,是否有解决办法?还是扩展绑定语法的方法?这是不可能的。android数据绑

大多数流行的MVVM框架允许对列表类型属性进行某种循环。例如,击倒赛有两种。它允许您在list属性的元素之间循环,并且对于每个元素,foreach循环中包含的标记都是重复的。在副本内部,当前元素用作数据绑定的上下文

我在Android中寻找类似的东西,但我只看到了将列表绑定到特定ui元素的可能性。但这在声明性方面是不好的,因为我需要在代码中创建UI元素


有没有办法使用Android的数据绑定功能来模拟类似的东西?如果没有,是否有解决办法?还是扩展绑定语法的方法?

这是不可能的。android数据绑定库使用静态XML布局并将值绑定到属性。动态创建静态布局是不受支持的,我想永远也不会。如果要动态创建视图层次结构,仍然应该使用带有适配器的视图。这是数据绑定可以做到的。只需创建您自己的数据绑定适配器,将列表绑定到
回收器
。例如,您可以绑定到一对
binding:iterator
binding:layout
属性,并在数据绑定适配器内设置
RecyclerVier.Adapter

正如@tynn所回答的,这种api不可用

为了获得相同的结果,可以在XML本身中为RecyclerView设置适配器。我已经在我的MVVM库中实现了这个特性。看

您的XML将如下所示:

<android.support.v7.widget.RecyclerView
    bind:items="@{vm.itemVms}"
    bind:layout_vertical="@{true}"
    bind:view_provider="@{@layout/row_item}" />

<!-- Same arguments for ViewPager-->
<android.support.v4.widget.ViewPager
    bind:items="@{vm.itemVms}"
    bind:view_provider="@{@layout/row_item}" />

伟大的资源和有趣的项目!谢谢