【发布时间】:2016-04-14 21:57:04
【问题描述】:
我能够毫无困难地让“活动范围”的数据绑定工作。但是,当我尝试为特定视图设置绑定时,比如说我以编程方式添加到 LinearLayout 的膨胀视图,我尝试过的任何方法都不起作用。
例如,将数据绑定到 Activity 的视图是微不足道的。通常在 onCreate() 方法中只需添加:
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
User user = new User("Test", "User");
binding.setUser(user);
就是这样!视图 main_activity.xml 将通过某种魔法“绑定”到绑定(这是我的问题),变量替换将在 main_activity.xml 中按预期工作。
我查阅了 Google 关于 RecyclerView 使用的文档,并尝试在我的膨胀视图中使用此方法。我通过为每个 ViewHolder 创建一个 ListItemBinding(我的 .xml 只是称为 list_item.xml 并且这个文件是从 .xml 布局自动生成的)来做到这一点,ListItemBinding 被传递给 ViewHolder 以作为参考通过每个 ViewHolder 的构造函数。
现在当然这不起作用,我猜这是因为我的 View 和 Binding 之间没有明确的联系,但是上面的 Activity 和 Binding 之间也没有联系,那为什么那行吗?
我正在深入研究源代码以了解绑定在活动上的工作方式,我相信这会有我的答案,但如果其他人能在我花费数小时之前加入,我将不胜感激。 !
我将在这里报告所有发现,非常感谢您
【问题讨论】:
-
在 RecyclerView 中使用 Android 数据绑定有一些技巧。看看这个演讲realm.io/news/data-binding-android-boyar-mount——大约 22 分钟后,Yigit 谈到了如何使用 RecyclerView 进行数据绑定。
-
@GeorgeMount 我实际上不想使用 RecyclerView,因为每个列表最多只有 5 个视图,所以不需要做很多回收......无论如何,我确实切换到了适当的 RecyclerViews使用 LinearLayout 并将视图单独添加到其中。这很容易,额外的开销可能值得直接的方法。
标签: android xml layout data-binding android-inflate