是否有可能以某种方式使用DataBinding
继承?我想定义一个自定义界面" bind"它适用于多种布局。
我知道接口不能使用成员变量,但也许有人知道创建成员方法的方法(插件),以便绑定创建这些方法。
我想要关注:
public interface IIconBinding
{
ImageView ivIcon();
}
然后我想强制may布局来实现这个接口,并在接口函数中返回id为R.id.ivIcon
的视图。代码可能如下所示:
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
app:interface="com.example.app.IIconBinding">
<ImageView
android:id="@+id/ivIcon"
android:layout_width="36dp"
android:layout_height="36dp" />
</layout>
或类似的。这个例子应该只是解释我想要实现的目标。我希望能够将创建的绑定强制转换为IIconBinding
的实例,并在剩下的代码中使用它,我不在乎它是否是上面的布局或任何其他布局{标识为ImageView
的{1}}并实现ivIcon
接口。
据我所知,这是不可能的,但也许有人知道另一种方法来达到我想要的目的吗?
修改 - 目标
结果应该允许我做以下事情:
IIconBinding
我知道所有3个绑定都包含// all objects are DIFFERENT binding objects
Example1Binding binding1 = DataBindingUtil.bind(inflator.inflate(.R.layout.example1, container, false));
Example2Binding binding2 = DataBindingUtil.bind(inflator.inflate(.R.layout.example2, container, false));
Example3Binding binding3 = DataBindingUtil.bind(inflator.inflate(.R.layout.example3, container, false));
,标识为ImageView
,所以我想做以下操作:
ivIcon
现在我能够编写一个可以在IIconBinding iconBinding1 = (IIconBinding) binding1;
IIconBinding iconBinding2 = (IIconBinding) binding2;
IIconBinding iconBinding3 = (IIconBinding) binding3;
对象中传递的函数,并在正确的视图中显示一个图标,无论绑定是IIconBinding
的对象,Example1Binding
或Example2Binding
,如下所示:
Example3Binding
如果没有通用接口,这将无法工作,我需要将所有绑定包装在容器中或编写3个不同的IconUtil.loadIcon(iconBinding1);
IconUtil.loadIcon(iconBinding2);
IconUtil.loadIcon(iconBinding3);
函数,每个绑定一个。