垂直的recyclerview
主recyclerview
显示布局中的所有交易
但是我想要实现的是:
- 在前10笔交易之后,我想展示(推荐的5笔交易)(水平回收站视图)
- 接下来的10笔交易之后,我想展示(推荐的5笔交易的水平回收站视图)
- 接下来的10笔交易之后,我想展示(推荐的5笔交易的水平回收视图),依此类推……
我已附上我想要设计外观的图像。
我不知道如何实现这一点。但是我两个recyclerview
分开工作。只是不确定如何组合它们。我什至不确定使用adapters
或mainactivity
进行编码。我已附加了水平recyclerview
适配器和垂直recyclerview
适配器的图像。请通过向我展示如何实现此功能来帮助我。谢谢
答案 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)
我已附上结果的最终版本,并且彩色字段适用于您的RecyclerView。 我建议您避免使用内部RecyclerView,而应使用NestedScrollView,并通过迭代添加项目。