我可以轻松地实现“活动级别”的数据绑定,但是当我尝试为特定的视图设置绑定时,例如我通过编程方式添加到LinearLayout中的充气视图,我尝试过的所有方法都没有起作用。
例如,将数据绑定到Activity视图非常简单。通常,在onCreate()方法中只需添加:
就这样了!main_activity.xml视图将通过一些魔法(这是我的问题)与绑定“绑定”,并且变量替换将按预期在main_activity.xml中起作用。我查阅了Google有关RecyclerView使用的文档,并尝试在我填充的视图中利用此方法。我通过为每个ViewHolder创建一个ListItemBinding(我的.xml只称为list_item.xml,这个文件是根据.xml布局自动生成的)来实现这一点,ListItemBinding被传递给ViewHolder以通过每个ViewHolder的构造函数作为引用保留。当然,这并不起作用,我猜测原因是我的View和Binding之间没有明确的联系,然而,Activity上面和Binding之间也没有联系,那为什么那个可以工作呢?我正在深入挖掘源代码以查看绑定如何在活动上工作,我相信那里将有我的答案,但如果有人在我花费多个小时之前能够帮忙解决的话,我会很感激的。我会在这里报告所有的发现,非常感谢。
例如,将数据绑定到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之间也没有联系,那为什么那个可以工作呢?我正在深入挖掘源代码以查看绑定如何在活动上工作,我相信那里将有我的答案,但如果有人在我花费多个小时之前能够帮忙解决的话,我会很感激的。我会在这里报告所有的发现,非常感谢。