我们是否可以在垂直recyclerview内拥有水平recyclerview?

时间:2019-11-03 09:21:30

标签: android android-recyclerview recycler-adapter

垂直的recyclerviewrecyclerview显示布局中的所有交易

但是我想要实现的是:

  
      
  • 在前10笔交易之后,我想展示(推荐的5笔交易)(水平回收站视图)
  •   
  • 接下来的10笔交易之后,我想展示(推荐的5笔交易的水平回收站视图)
  •   
  • 接下来的10笔交易之后,我想展示(推荐的5笔交易的水平回收视图),依此类推……
  •   

我已附上我想要设计外观的图像。

我不知道如何实现这一点。但是我两个recyclerview分开工作。只是不确定如何组合它们。我什至不确定使用adaptersmainactivity进行编码。我已附加了水平recyclerview适配器和垂直recyclerview适配器的图像。请通过向我展示如何实现此功能来帮助我。谢谢

1 个答案:

答案 0 :(得分:0)

class MyAdapter(val list: List<String?>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {

private val TYPE_ITEM = 0
private val TYPE_HORIZONTAL_ITEM = 1

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    return if(viewType == TYPE_ITEM) {
        ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false))
    }else HorizontalViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.horizontal_layout, parent, false))
}

override fun getItemCount(): Int {
    return list.size
}

override fun getItemViewType(position: Int): Int {
    return if(list[position]!=null) TYPE_ITEM else TYPE_HORIZONTAL_ITEM
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

    if(holder is ViewHolder){
        holder.bind(list[position]?:"")
        // manage your items
    }else if(holder is HorizontalViewHolder)
        holder.bind()
        // manage your horizontal recyclerView
}

class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {

    fun bind(item: String){

    }
}

class HorizontalViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

    fun bind(){

    }
}

您必须创建适用于不同viewType的适配器。作为示例,我列出了字符串,每个第10个元素为null,这表示它是水平的recyclerView。我相信,在您的情况下,它应该不是处理null的模型,而是用于处理水平recyclerView的模型。例如,清单20的大小应为22,因为有两个水平的recyclerViews。

for (i in 1 until 25){
        if (i % 10 == 0)
            list.add(null)
        else list.add("Hello")
    }

recyclerView.adapter = MyAdapter(list)

enter image description here

我已附上结果的最终版本,并且彩色字段适用于您的RecyclerView。 我建议您避免使用内部RecyclerView,而应使用NestedScrollView,并通过迭代添加项目。