如何在ViewPager中展示单个商品的多组图文详情,是否需要适配器?
解决方案
你只需要调整3处代码即可实现需求:
1. 补全ViewPager子布局的文本控件ID
先给item_view_pager_layout.xml里的文本控件添加ID,方便后续赋值:
<com.abc.xyz.utils.MSPTextViewBold android:id="@+id/tv_item_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/colorPrimaryDark" tools:text="This is a sample text" />
2. 重构ViewPager适配器
原适配器是接收商品列表的,现在修改为接收单个商品对象,自动解析内部的多组图文:
class ItemViewPagerAdapter( private val context: Context, private val item: Item ) : RecyclerView.Adapter<ItemViewPagerAdapter.MyViewHolder>() { // 先把图文总数转成Int,兜底默认1页避免崩溃 private val itemCount = try { item.image_count.toInt() } catch (e: Exception) { 1 } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { return MyViewHolder(ItemViewPagerLayoutBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { // position从0开始,对应第1组到第N组图文 val (imageUrl, text) = when(position + 1) { 1 -> item.image_url1 to item.text1 2 -> item.image_url2 to item.text2 3 -> item.image_url3 to item.text3 4 -> item.image_url4 to item.text4 5 -> item.image_url5 to item.text5 6 -> item.image_url6 to item.text6 7 -> item.image_url7 to item.text7 8 -> item.image_url8 to item.text8 9 -> item.image_url9 to item.text9 10 -> item.image_url10 to item.text10 else -> item.image_url1 to item.text1 } // 加载图片和文本 GlideLoader(context).loadProductPicture(imageUrl, holder.binding.ivItems) holder.binding.tvItemDesc.text = text } override fun getItemCount(): Int { return itemCount } class MyViewHolder(val binding: ItemViewPagerLayoutBinding):RecyclerView.ViewHolder(binding.root) }
3. 修改Activity中适配器初始化逻辑
直接把拿到的单个商品对象传给适配器即可:
private fun openViewPager(itemDetails: Item) { val adapter = ItemViewPagerAdapter(this, itemDetails) binding.vpItems.adapter = adapter }
注意事项
- 注意你的代码中Model类名存在
Item/Items混用的情况,需要根据你实际的类名统一调整,避免类型不匹配报错 - 如果后端存储的
image_count本身就是数字类型,建议直接把Model类里的image_count字段改成Int类型,省去转换步骤
内容的提问来源于stack exchange,提问作者Codist
相关产品推荐
相关产品推荐

