在我的应用程序中,我有一个myMapList.get(1)= {1=laptop, 2=pc, 3=stackover, 4=flow}
类,它以两种不同的方式显示:一张包含所有信息的普通卡和一张只显示其部分数据的小卡。
所以,我有两种布局:$result,$row
和 while($row = $result->fetch(PDO::FETCH_ASSOC)){
$pid = $row['product_id'];
$quantity = $row['quantity'];
$result1 = $db->prepare("SELECT * FROM Products WHERE productID=:pid");
$result1->bindParam(':pid', $pid);
$result1->execute();
while($row1 = $result1->fetch(PDO::FETCH_ASSOC)){
echo $row1['naam'];
}
}
。
现在,我可以将这两个布局绑定到同一个Product
类吗?
两种布局都有:
product_card.xml
我有一个product_card_small.xml
选择其中一个布局。但是,当我想在其viewHolder中同时使用Product
和<data>
<import type="com.MyTest.android.Models.Product"/>
<variable name="product" type="Product"/>
</data>
时,只能识别其中一个(productsAdapter
)。另一个无法解决。
我想知道它是否可能,如果可能,为什么它只解决其中一个?
答案 0 :(得分:0)
我有同样的问题。由于一个xml只能绑定到一个ViewDataBinding,因此您基本上无法做到这一点。我当前的解决方案是使用代理类。在您的情况下,如果ProductCardBinding,ProductCardSmallBinding都具有一个TextView和ImageView,则ProductCardBindingProxy如下所示:
class ProductCardBindingProxy {
lateinit var someText: TextView
lateinit var someImage: ImageView
lateinit var viewDataBinding: ViewDataBinding
fun bind(productCardBinding: ProductCardBinding) {
this.viewDataBinding = productCardBinding
this.someImage = productCardBinding.image
this.someText = productCardBinding.text
}
fun bind(productCardSmallBinding: ProductCardSmallBinding) {
this.viewDataBinding = productCardSmallBinding
this.someImage = productCardSmallBinding.image
this.someText = productCardSmallBinding.text
}
}
然后您可以在CreateViewHolder上使用此
val proxy = ProductCardBindingProxy().apply { bind(viewBinder) }
ProductCardViewHolder(proxy)
我认为这不是很好的解决方案,但这至少可以解决。 :)
答案 1 :(得分:-1)
也许你可以这样做。我从不使用它。
<data class=".Item1">
<import type="com.MyTest.android.Models.Product"/>
<variable name="product" type="Product"/>
</data>
<data class=".Item2">
<import type="com.MyTest.android.Models.Product"/>
<variable name="product" type="Product"/>
</data>