# 入门使用
# 使用JitPack
的方式, 引入库.
# 根目录中的 build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
# APP目录中的 build.gradle
dependencies {
//稳定版请使用
implementation 'com.github.angcyo:DslAdapter:1.0.0'
//跟随作者最新版请使用
implementation 'com.github.angcyo:DslAdapter:master-SNAPSHOT'
}
RecyclerView
(以下简称RV
)是一个高性能
,高扩展
,高度自由
控制的控件, 它不仅仅适用于列表界面
, 普通的界面, 带不带滚动条的界面, 都适合. 而且, 带滚动的界面更是非常适合.
当你使用DslAdapter
的时候, 你会发现,这一切都是那么的简单, 愉快.
DslAdapterItem
(以下简称Item
), 是DslAdapter
组成的最小单位, 各种简单/复杂的Item
组成了整个界面.
所以, 自定义Item
, 分解Item
, 就是您该考虑的事, 剩下的就交给我
吧.
开启我们的魔幻之旅吧.
# DslAdapter
DslAdapter
的基类就是RecyclerView.Adapter
,
所以你可以像使用RecyclerView.Adapter
一样,使用DslAdapter
. 无任何差异!
recyclerView.adapter = DslAdapter() //简简单单一行, 即可.
# DslAdapterItem
# 实现一个简单的DslAdapterItem
只需要继承DslAdapterItem
, 为属性itemLayoutId
指定布局id即可.
class DslDemoItem : DslAdapterItem() {
init {
itemLayoutId = R.layout.item_demo_list //指定布局, 这是必须的.
}
var itemText: CharSequence? = null
//重写`onItemBind`方法, 实现界面的绑定
override fun onItemBind(
itemHolder: DslViewHolder,
itemPosition: Int,
adapterItem: DslAdapterItem
) {
super.onItemBind(itemHolder, itemPosition, adapterItem)
itemHolder.tv(R.id.text_view).text = itemText
}
}
DslViewHolder
只是RecyclerView.ViewHolder
的子类, 简单的做了一些快速方法封装, 并无特殊.
如果你, 不想继承DslAdapterItem
, 也可以如下这样:
val item = DslAdapterItem()
item.itemLayoutId = layoutId
item.onItemBindOverride = { itemHolder, _, _ ->
itemHolder.tv(R.id.text_view).text = "itemText"
}
# 追加到界面
有了Item
, 怎么和DslAdapter
关联呢? 这里有3中方式可以关联:
# 1. 直接调用addLastItem
或者同类型方法insertItem
val item = DslAdapterItem()
dslAdapter.addLastItem(item)
dslAdapter.insertItem(index, item)
# 2. 使用[invoke]运算符重载方式 追加[DslAdapterItem], 如下
//此方式需要包裹在`dslAdapter`上下文中.
dslAdapter.apply {
DslAdapterItem()() {
...
}
}
dslAdapter.run {
DslAdapterItem()() {
...
}
}
# 3. 使用[plus]运算符重载方式 追加[DslAdapterItem]
dslAdapter + DslAdapterItem().apply {
...
} + DslAdapterItem().apply {
...
} + DslAdapterItem().apply {
...
} + DslAdapterItem().apply {
...
}
总结
使用Item
需要注意的3点:
itemLayoutId
必须指定- 重写
onItemBind
或者赋值onItemBindOverride
, 实现界面数据的绑定. 可选 - 追加到界面, 完事.
快去试一下吧, 界面是不是就这样如此轻松地出来了?
接下来, 将会带你体验高级特性
使用方法.
← DslAdapter 定向更新 →