使用时,显示卡的特定布局CardView
非常简单。
我已经为卡创建了XML布局,并使用实例化了该XML布局到View LayoutInflater
。
进一步来说:
View largeCardView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_view, viewGroup, false);
这就是所谓的onCreate()
我的方法RecyclerAdapter
。onCreate
然后该方法返回this largeCardVew
。这可以完美地工作,并且卡片按XML文件中的布局显示。
但是,如果我想针对不同的内容显示不同的卡片怎么办?是否可以针对不同的事物显示不同的卡片,但将它们全部放在同一张卡片中RecyclerView
?
例如,如果我事先知道会有一个字符串传递到TextView
卡中,并且该字符串只能有两个值“ Large”和“ Small”,那么我该如何使用一种类型的XML文件来与“大”文本和另一个与“小”文本一起使用的XML文件?
这是一个示例(摘自Google Play):
如您在图片中所看到的,有两种不同的卡类型,具有不同的布局(忽略橙色按钮)。有没有办法实现相似的目的,并且使卡片相同RecyclerView
?
这与创建单个卡布局的方式类似,但是除了具有单个.xml
和单个的之外ViewHolder
,每个布局都需要有自己的 .xml
文件来定义它,以及一个ViewHolder
类。
发现非常重要的getItemViewType(int position)
方法是RecyclerView.Adapter类中的方法。默认情况下,此方法返回0,并假定使用单个布局viewType
(在本例中为a cardView
)。由于需要多个类型,因此我必须定义它们。
然后,我创建了一个整数数组(称为cardViewTypes
),定义了用于哪种数据类型的布局。由于您应该已经有了卡片内容的某种数据集(无论是aList
还是a HashMap
),因此确保数据与视图类型匹配非常重要。
就我而言,我希望有4种不同的卡布局,因此我在各自的.xml
文件中定义了每种布局,并为其指定了唯一的名称。然后,在我的RecyclerView.Adapter
课堂上,我创建了一个单独的类别,该类别ViewHolder
针对每种布局进行了扩展。我确保viewType
数组中的每个整数都与数据匹配并称为getItemViewType
。
然后,我使用中的onCreateViewHolder
方法检查视图类型RecyclerView.Adapter
,并为绑定相应的视图,然后将其绑定到中onBindViewHolder(ViewHolder, int)
。
结果是针对不同内容的不同卡布局。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句