Sliver
使用方式
- 首先在使用模塊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 數(shù)據(jù)集合
//item 列表item數(shù)據(jù)
//position 列表位置
//holder viewhodler
recyclerView.sliver{
datas = list
layoutManager = LinearLayoutManager(this@MainActivity)
item<數(shù)據(jù)類型>{
layoutId = R.layout.item1
selector = {item,position->
//多類型使用判斷 返回true 即表示使用此類型 item
retun true
}
itemContent = { item,position,viewholder->
}
}
item<數(shù)據(jù)類型>{
layoutId = R.layout.item2
selector = {item,position->
//多類型使用判斷 返回true 即表示使用此類型 item
retun true
}
itemContent = { item,position,viewholder->
}
}
item<數(shù)據(jù)類型,ViewDataBinding>{
selector = {item,position->
//多類型使用判斷 返回true 即表示使用此類型 item
retun true
}
itemContent = { item,position,binding->
}
}
}
databinding 使用
recyclerView.satis(list){
item<數(shù)據(jù)類型,ViewDataBinding>{
selector = {item,position->
//多類型使用判斷 返回true 即表示使用此類型 item
retun true
}
itemContent = { item,position,binding->
}
}
}
selector 作用在于存在多種類型type 時矗钟,根據(jù)此判斷選擇是否采用此類型。
- databinding xml中使用
<androidx.recyclerview.widget.RecyclerView
···
datas="@{items}"
layoutId="@{@layout/R.layout.item_single_type}"
brStr="@{BR ID}"
/>
目前在建議在單類型布局的情況使用 databinding xml 方式(僅上面三行代碼搞定),多類型的不建議使用databinding xml 實現(xiàn)(我也沒實現(xiàn)相關(guān)功能嫌变,考慮點在:多類型情況下在xml中實現(xiàn)反而更加復(fù)雜吨艇,不符合我對簡潔代碼的期望)
- 其他api
recyclerView.satis(list){
...
layoutManager = ...// 默認(rèn)為linearLayoutManager
//添加頭部 headerView 頭部View
header = headerView1
header = headerView2
//添加尾部 footView
footer = footView1
footer = footView2
//點擊事件 參數(shù)分別為: viewholder、 列表中的實際位置腾啥、所在數(shù)據(jù)集合中的位置
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
}
}
代碼構(gòu)思架構(gòu)不易桑谍,想做一個體現(xiàn)“好用”開源開發(fā)框架,希望各位大佬多多支持祸挪,不吝賜教锣披。
有想法歡迎討論給建議,私信加群