使用包含标签的Android数据绑定
更新说明:
上面的例子工作正常 ,因为1.0-rc4版本修复了需要不必要variables的问题。
原始问题:
我完全按照文档中所描述的那样工作:
main.xml中:
<layout xmlns:andr... <data> </data> <include layout="@layout/buttons"></include> ....
buttons.xml:
<layout xmlns:andr...> <data> </data> <Button android:id="@+id/button" ...." />
MyActivity.java:
... binding = DataBindingUtil.inflate... binding.button; ->cannot resolve symbol 'button'
如何获得button?
问题是包含的布局不被认为是一个数据绑定的布局。 为了使它作为一个,你需要传递一个variables:
buttons.xml:
<layout xmlns:andr...> <data> <variable name="foo" type="int"/> </data> <Button android:id="@+id/button" ...." />
main.xml中:
<layout xmlns:andr... ... <include layout="@layout/buttons" android:id="@+id/buttons" app:foo="@{1}"/> ....
然后,您可以通过button字段间接访问button:
MainBinding binding = MainBinding.inflate(getLayoutInflater()); binding.buttons.button
从1.0-RC4(刚发布)开始,你不再需要这个variables。 您可以将其简化为:
buttons.xml:
<layout xmlns:andr...> <Button android:id="@+id/button" ...." />
main.xml中:
<layout xmlns:andr... ... <include layout="@layout/buttons" android:id="@+id/buttons"/> ....
另一个有趣的事情是,你可以像这样从绑定器中将variables传递给导入的布局:
MainBinding binding = MainBinding.inflate(getLayoutInflater());
binding.buttons.setVariable(BR.varID, variable)