Sliver RecyclerView 功能最强大、最好用的适配器

# Sliver
[github主页](https://github.com/sunshaobei/Satis)
[文档](https://sunshaobei.gitbook.io/satis/sliver)

使用方式

- 首先在使用模块project gradle 中添加mavencentral() 仓库

 ```groovy
    repositories {
           ...
           mavenCentral()
       }
   ```
- 然后在使用模块module gradle 中添加
 
```kotlin    
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}
dependencies {
   ...
    implementation "io.github.sunshaobei:satis-sliver:1.0.1"
}


```

- 单类型布局
```kotlin
//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 使用
```kotlin
recyclerView.satis(list){    
    item<数据类型,ViewDataBinding>{
            selector = {item,position->
                //多类型使用判断 返回true 即表示使用此类型 item
                retun true
            }
            itemContent = { item,position,binding->
                
            }
     }
}
```

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

-  databinding xml中使用

```kotlin
    <androidx.recyclerview.widget.RecyclerView
        ···
        datas="@{items}"
        layoutId="@{@layout/R.layout.item_single_type}"
        brStr="@{BR ID}"
    />
```
目前在建议在单类型布局的情况使用 databinding xml 方式(仅上面三行代码搞定),多类型的不建议使用databinding xml 实现(我也没实现相关功能,考虑点在:多类型情况下在xml中实现反而更加复杂,不符合我对简洁代码的期望)

- 其他api
```kotlin
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
    }
}
```
## 代码构思架构不易,想做一个体现“好用”开源开发框架,希望各位大佬多多支持,不吝赐教。

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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sliver是一种用于构建滚动效果的Widget。在Flutter中,滚动效果可以通过将子Widget包裹在一个滚动容器中来实现,而Sliver正是用来创建这样的滚动容器的。 Sliver4.2.2是Sliver的一个特定版本或常用的配置。具体来说,这个版本可能会包含了一些特定的修复或更新,通过使用这个版本,可以确保在滚动过程中的性能和用户体验得到最佳的保证。 在Sliver中,可以根据需要选择不同的配置,以满足不同的滚动需求。例如,SliverAppBar可以创建一个可以随着滚动而收缩的应用栏,SliverGrid可以创建一个可以滚动的网格布局,SliverList可以创建一个可以滚动的列表等等。 Sliver的工作原理是,它会根据滚动的位置动态生成和回收子Widget,以提高性能和减少内存消耗。滚动容器会根据屏幕大小和滚动位置自动调整子Widget的显示范围,只显示在屏幕内可见的部分,而不需要一次性加载所有的子Widget。 在使用Sliver时,需要注意一些常见的问题。例如,滚动容器的内容不要过于庞大,以免消耗过多的内存和CPU资源。另外,对于需要处理用户手势的滚动效果,应该正确处理滑动事件,以提供良好的用户体验。 总之,Sliver4.2.2是一个用于构建滚动效果的Widget版本,在Flutter中使用Sliver可以轻松创建各种类型的滚动容器,并且可以根据具体的需求进行自定义配置,以满足不同的滚动需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值