将一个类绑定到两个布局?
原学程将引见将1个类绑定到二个结构?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
在我的运用法式中,我有1个Product
类,它以二种分歧的方法显示:1个是包括一切信息的通俗卡片,另外一个是只显示部门ITS数据的小卡片。
是以,我有二个结构:product_card.xml
以及product_card_small.xml
。
如今,我不妨将这二个结构绑定到统一个Product
类吗?
二种结构皆有:
<data>
<import type="com.MyTest.android.Models.Product"/>
<variable name="product" type="Product"/>
</data>
我有1个productsAdapter
,它选择个中1个结构。然则,当我想在其viewHolder中同时应用ProductCardBinding
以及ProductCardSmallBinding
时,只能辨认个中1个(ProductCardBinding
)。另外一个没法剖析。
我想晓得这能否能够,假如能够,为何它只处理个中1个成绩?
推举谜底
我碰到了异样的成绩。由于1个XML只能绑定到1个ViewDataBinding
,所以根本上不克不及如许做。我今朝的处理计划是应用署理类。在您的示例中,假如ProductCardBinding
以及ProductCardSmallBinding
皆有1个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)
我以为这没有是1个佳的处理计划,但是这至多不妨处理它。:)
佳了闭于将1个类绑定到二个结构?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。