美文网首页
Sliver -RecyclerView功能最强大的adapte

Sliver -RecyclerView功能最强大的adapte

作者: 进击的小大叔 | 来源:发表于2022-04-13 16:11 被阅读0次

    Sliver

    github主页
    文档

    使用方式

    • 首先在使用模块project gradle 中添加mavencentral() 仓库
       repositories {
              ...
              mavenCentral()
          }
    
    • 然后在使用模块module gradle 中添加
    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-kapt'
    }
    dependencies {
       ...
        implementation "io.github.sunshaobei:satis-sliver:1.0.1"
    }
    
    
    
    • 单类型布局
    //list 数据集合
    //item 列表item数据
    //position 列表位置
    //holder viewhodler
    
    recyclerView.sliver{
            datas = list
            layoutManager = LinearLayoutManager(this@MainActivity)
            item<数据类型>{
                layoutId = R.layout.item1
                selector = {item,position->
                    //多类型使用判断 返回true 即表示使用此类型 item
                    retun true
                }
                itemContent = { item,position,viewholder->
                    
                }
            }
            
             item<数据类型>{
                layoutId = R.layout.item2
                selector = {item,position->
                    //多类型使用判断 返回true 即表示使用此类型 item
                    retun true
                }
                itemContent = { item,position,viewholder->
                    
                }
            }
                item<数据类型,ViewDataBinding>{
                selector = {item,position->
                    //多类型使用判断 返回true 即表示使用此类型 item
                    retun true
                }
                itemContent = { item,position,binding->
                    
                }
            }
        }
    

    databinding 使用

    recyclerView.satis(list){   
        item<数据类型,ViewDataBinding>{
                selector = {item,position->
                    //多类型使用判断 返回true 即表示使用此类型 item
                    retun true
                }
                itemContent = { item,position,binding->
                    
                }
         }
    }
    

    selector 作用在于存在多种类型type 时,根据此判断选择是否采用此类型。

    • databinding xml中使用
        <androidx.recyclerview.widget.RecyclerView
            ···
            datas="@{items}"
            layoutId="@{@layout/R.layout.item_single_type}"
            brStr="@{BR ID}"
        />
    

    目前在建议在单类型布局的情况使用 databinding xml 方式(仅上面三行代码搞定),多类型的不建议使用databinding xml 实现(我也没实现相关功能,考虑点在:多类型情况下在xml中实现反而更加复杂,不符合我对简洁代码的期望)

    • 其他api
    recyclerView.satis(list){   
        ...
        layoutManager = ...// 默认为linearLayoutManager
        //添加头部 headerView 头部View
        header = headerView1
        header = headerView2
        //添加尾部 footView
        footer = footView1
        footer = footView2
        
        //点击事件 参数分别为: viewholder、 列表中的实际位置、所在数据集合中的位置
       itemClick = {holder, adapterPosition, listPosition ->
                    Toast.makeText(this@SingleTypeActivity, "点击 position -$p2", Toast.LENGTH_SHORT)
                        .show()
                }
        
        //分割线 oriention方向、 size 分割线高度、color 颜色 
        //其中 pading 在水平方向 近 top跟bottom 剩下,垂直方向仅left、right 生效
        divider{
            orientation = VERTICAL_LIST
            size = 1
            color = Color.RED
            paddingLeft = 10
            paddingRight = 10
            paddingTop = 10
            paddingBottom = 10
        }
    }
    

    代码构思架构不易,想做一个体现“好用”开源开发框架,希望各位大佬多多支持,不吝赐教。

    有想法欢迎讨论给建议,私信加群

    相关文章

      网友评论

          本文标题:Sliver -RecyclerView功能最强大的adapte

          本文链接:https://www.haomeiwen.com/subject/dtgtertx.html