# 入门使用
# 使用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 定向更新 →