使用来自2种不同布局的相同Android绑定类

Wil*_*ter 7 binding android android-layout android-6.0-marshmallow

我试图使用Android的数据绑定在两个不同的布局中显示来自同一类的数据.布局用于膨胀a中的视图ListView.我已经让它运行一个,我希望使用相同的适配器类,因为它很容易指定使用哪个布局资源.

问题出现在自动生成的数据绑定类中; 因为有两个布局文件,所以它会产生两个,比如说,LayoutOneBindingLayoutTwoBinding,当我使用时

DataBindingUtil.bind(inflatedView)

我得到了两个中的一个,并且它们没有可以将结果分配给并且仍然能够使用所包含数据的公共超类.那么,有没有办法在两种不同的布局中重用数据绑定类?

每个布局文件都有一个单独的<variable>,但它的名称相同并包含相同类型的数据.

Ash*_*hok 0

如果两个绑定中具有相同的变量名称,有一种方法可以重用绑定。每个数据绑定都会扩展ViewDataBinding. 所以,你有一个你可以接受的超级类。

在这里,您不能像 那样直接设置变量dataBinding.variable1 = someValue。但是,还有一种替代方法,即使用#setVariable函数。

因此,在您的适配器中,您的代码将如下所示:

dataBinding.setVariable(BR.variable1, someValue)
Run Code Online (Sandbox Code Playgroud)

参考: https: //www.vogella.com/tutorials/AndroidDatabinding/article.html#implement-the-recyclerview-with-data-binding