RecyclerView使用BaseProviderMultiAdapter和BaseItemProvider实现无限循环(2级列表:纵向RecyclerView和横向RecyclerView无限循环

使用BaseProviderMultiAdapter和BaseItemProvid实现无限循环(2级列表,同时支持纵向RecyclerView和横向RecyclerView无限循环)支持点击button、item、左右滑动无限循环。

LoopTwoLevelFragment类:
package com.example.androidkotlindemo2.recyclerview.demo6

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSnapHelper
import com.example.androidkotlindemo2.R
import com.example.androidkotlindemo2.bean.Loop2Bean
import com.example.androidkotlindemo2.bean.LoopSecondBean
import com.example.androidkotlindemo2.bean.LoopTwoLevelBean
import com.example.androidkotlindemo2.databinding.RecyclerViewLoopFirstMainBinding
import com.example.androidkotlindemo2.databinding.RecyclerViewLoopTwoLevelMainBinding
import com.example.androidkotlindemo2.recyclerview.provider.Loop2BaseMultiProviderAdapter
import com.example.androidkotlindemo2.recyclerview.provider.Loop2Common
import com.example.androidkotlindemo2.recyclerview.provider.LoopFirstBaseMultiProviderAdapter
import com.example.androidkotlindemo2.utils.LogUtils

/**
 * Author : wn
 * Email : maoning20080809@163.com
 * Date : 2024/6/1 10:43
 * Description : 使用LoopFirstBaseMultiProviderAdapter实现无限循环(2级列表,纵向RecyclerView和横向RecyclerView无限循环)
 * 支持点击button、item、左右无限循环
 */
class LoopTwoLevelFragment : Fragment() {

    private lateinit var binding : RecyclerViewLoopTwoLevelMainBinding

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = RecyclerViewLoopTwoLevelMainBinding.inflate(inflater, container, false)
        return binding.root
    }


    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        var adapter = LoopFirstBaseMultiProviderAdapter()
        var data = getData()
        adapter.data = data
        var linearLayoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
        var linearSnapHelper = LinearSnapHelper()
        binding.rvLoopTwoLevelRecyclerView.let {
            it.adapter = adapter
            it.layoutManager = linearLayoutManager
            linearSnapHelper.attachToRecyclerView(it)
        }

        adapter.setOnItemClickListener { adapter, view, position ->
            LogUtils.e(TAG, "1setOnItemClickListener 点击item")
        }

        adapter.setOnItemChildClickListener { adapter, view, position ->
            when(view.id){
                R.id.rv_loop2_item_btn -> {
                    LogUtils.e(TAG, "2setOnItemChildClickListener 点击按钮")
                }
                R.id.rv_loop2_item_root -> {
                    LogUtils.e(TAG, "2setOnItemChildClickListener 点击item")
                }
            }
        }

    }

    private fun getData() : MutableList<LoopTwoLevelBean>{
        //1级列表
        var list = mutableListOf<LoopTwoLevelBean>()
        var imgs1 = intArrayOf(R.mipmap.base_banner0, R.mipmap.base_banner1, R.mipmap.base_banner2, R.mipmap.base_banner3, R.mipmap.base_banner4, R.mipmap.base_banner5)
        var imgs2 = intArrayOf(R.mipmap.demo_fishs, R.mipmap.demo_classics, R.mipmap.demo_pets, R.mipmap.demo_fruits, R.mipmap.demo_farms, R.mipmap.base_banner5)

        for(i in 0..1){
            var loopTwoLevelBean = LoopTwoLevelBean(i, "第${i+1}级标题", Loop2Common.BASE_LOOP_FIRST)
            //2级列表
            var secondList = mutableListOf<LoopSecondBean>()

            var resultImgs = intArrayOf()
            resultImgs = if(i == 0){
                imgs1
            } else {
                imgs2
            }
            for(j in 0 until imgs1.size){
                var loopSecondBean = LoopSecondBean(i, "姓名${i}-${j}", "描述${i}-${j}", "",
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王宁-Android

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值