本文介绍了将一个类绑定到两个布局?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的应用程序中,我有一个Product
类,它以两种不同的方式显示:一个是包含所有信息的普通卡片,另一个是只显示部分ITS数据的小卡片。
因此,我有两个布局:product_card.xml
和product_card_small.xml
。
现在,我可以将这两个布局绑定到同一个Product
类吗?
两种布局都有:
<data>
<import type="com.MyTest.android.Models.Product"/>
<variable name="product" type="Product"/>
</data>
我有一个productsAdapter
,它选择其中一个布局。但是,当我想在其viewHolder中同时使用ProductCardBinding
和ProductCardSmallBinding
时,只能识别其中一个(ProductCardBinding
)。另一个无法解析。
我想知道这是否可能,如果可能,为什么它只解决其中一个问题?
推荐答案
我遇到了同样的问题。因为一个XML只能绑定到一个ViewDataBinding
,所以基本上不能这样做。我目前的解决方案是使用代理类。在您的示例中,如果ProductCardBinding
和ProductCardSmallBinding
都有一个TextView
和ImageView
,则ProductCardBindingProxy
如下所示:
class ProductCardBindingProxy {
val someText: TextView
val someImage: ImageView
val viewDataBinding: ViewDataBinding
constructor(productCardBinding: ProductCardBinding) {
viewDataBinding = productCardBinding
someImage = productCardBinding.image
someText = productCardBinding.text
}
constructor(productCardSmallBinding: ProductCardSmallBinding) {
viewDataBinding = productCardSmallBinding
someImage = productCardSmallBinding.image
someText = productCardSmallBinding.text
}
}
然后您可以在onCreateViewHolder
val proxy = ProductCardBindingProxy(viewBinder)
ProductCardViewHolder(proxy)
我认为这不是一个好的解决方案,但这至少可以解决它。:)
这篇关于将一个类绑定到两个布局?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!