v5.0.0-a06
Pre-release
Pre-release
Fixes
- to further migrate towards a better separation of responsibilities we have introduced a new interface which will describe the logic for creating the
ViewHoldertheIItemVHFactory. - To complete this interface there is now a new
BaseItemandModelBaseItemto allow splitting item logic, and ViewHolder creation logic. - The old
AbstractItemandModelAbstractItemare now deprecated in favor of the newer approach - The
IIteminterface no longer contains theFactorylogic - It is still possible to implement items "the old way" by using the
AbstractItemor by providing theIItemVHFactorybeside theIIteminterface, and also theIItemViewGeneratorif needed
Migration
OLD
If the Item implementation looked like:
class SimpleImageItem : AbstractItem<SimpleImageItem.ViewHolder>() {
override val type: Int
get() = R.id.fastadapter_simple_image_item_id
override val layoutRes: Int
get() = R.layout.simple_image_item
override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) {
...
}
override fun unbindView(holder: ViewHolder) {
}
override fun getViewHolder(v: View): ViewHolder {
return ViewHolder(v)
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var view: FrameLayout
...
}
}
NEW
It should be refactored to look like:
class SimpleImageItem : BaseItem<SimpleImageItem.ViewHolder>() {
override val type: Int
get() = R.id.fastadapter_simple_image_item_id
override val factory: IItemVHFactory<ViewHolder> = SimpleImageItemFactory
override fun bindView(holder: ViewHolder, payloads: MutableList<Any>) {
...
}
override fun unbindView(holder: ViewHolder) {
...
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var view: FrameLayout
}
}
object SimpleImageItemFactory : BaseItemFactory<SimpleImageItem.ViewHolder>() {
override val type: Int
get() = R.id.fastadapter_simple_image_item_id
override val layoutRes: Int
get() = R.layout.simple_image_item
override fun getViewHolder(v: View): SimpleImageItem.ViewHolder {
return SimpleImageItem.ViewHolder(v)
}
}