android - 如何使用 Android 数据绑定(bind)进行 for 循环?

标签 android mvvm knockout.js android-databinding

最流行的 MVVM 框架允许对列表类型属性进行某种循环。例如 Knockout 有 foreach-binding .它允许您遍历列表属性的元素,并且对于每个元素,包含在 foreach 循环中的标记被复制。在副本中,当前元素用作数据绑定(bind)的上下文。

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

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

最佳答案

正如@tynn 回答的那样,这种 api 不可用。

要获得相同的结果,您可以在 XML 本身中为 RecyclerView 设置一个适配器。我已经在我的 MVVM 库中实现了这个功能。参见 Setup RecyclerView from XML itself .

您的 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}" />

此外,还支持根据您的 ViewModel 显示不同类型的 subview 。参见 Using different types of child views

关于android - 如何使用 Android 数据绑定(bind)进行 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39942595/

相关文章:

javascript - 使用 jquery knockout js 检索头像

android - 使用 Flutter 加载 AssetImages

android - ActivityManager.isUserAMonkey() 方法有什么用?

android - 当 "do not keep activity"开发选项打开时,ViewModel 被清除

java - SavedState ViewModel 使用 SavedStateViewModelFactory

javascript - 使用 Knockout 'foreach' 循环遍历多维数组

javascript - 如何自动聚焦一个领域?

java - Eclipse AVD 给出错误 'Unfortunately, (app) has stopped'

android - 如何为 Android Wear 使用 setOnApplyWindowInsetsListener

c# - 根据MVVM中的复选框列表选择启用WPF按钮