SmartAdapter
使用Kotlin編寫的極簡使用RecyclerView Adapter,無需創(chuàng)建adapter,直接調(diào)用RecyclerView.bind().build() 即可使用入问。build()調(diào)用后,返回創(chuàng)建好的SmartAdapter,后續(xù)更新列表操作通過SmartAdapter實(shí)例。
導(dǎo)入 :
Android:
? implementation "com.ayvytr:smart-adapter:0.1.0"
Androidx:
? implementation "com.ayvytr:smart-adapter-androidx:0.1.0"
Javadoc
使用:
//單個(gè)item type:
recycler_view.bind(list, R.layout.item) { item: Item ->
item_text.text = item.value
}}
//創(chuàng)建adapter间狂,最后一步一定要調(diào)用!
.build()
//多種 item view:
recycler_view.bind(list, R.layout.item, 1) { item: Item ->
item_text.text = item.value
}
//添加item view的方法
.map(R.layout.item_second, 2) { item: Item ->
item_second_text.text = item.value
}
.map(R.layout.item_custom, 3) { item: Item ->
item_custom_text.text = item.value
}
.map(BindMap4())
//添加自定義DiffCallback
// .diff({ oldItem, newItem -> oldItem.type == newItem.type },
// { oldItem, newItem -> oldItem.value == newItem.value },
// { oldItem, newItem ->
// if (oldItem.value != newItem.value) {
// newItem
// } else null
// },
// { holder, item, payloads -> holder.bind(item) })
//另一種添加自定義DiffCallback的方法
.diff(Diff())
//如何在你的item獲取item view type
.type { it.type }
//item click listener
.click { item: Item, i: Int ->
toast("clicked $i $item")
}
//item long click listener
.longClick { item: Item, i: Int ->
toast("long clicked $i $item")
}
//取消DiffCallback
//.cancelDiff()
//創(chuàng)建adapter火架,最后一步一定要調(diào)用鉴象!
.build()
class Diff : SmartDiffCallback<Item>({ oldItem, newItem -> oldItem === newItem },
{ oldItem, newItem -> oldItem === newItem && oldItem.value == newItem.value },
{ item: Item, item1: Item -> },
{ param: Any, item: Item, mutableList: MutableList<Any> -> }
)
class BindMap4 : SmartContainer<Item>(R.layout.item_4, 4, { item_text_4.text = it.value }) {
}