Flexible multiple types for Android RecyclerView.
View.layoutPosition
and remove View.
adapterPosition
View.holder
, View.absoluteAdapterPosition
and View.bindingAdapterPosition
(see https://github.com/drakeet/MultiType/commit/7dca987d8b56fa1dc34636f9d59653e4e99e75a8)ItemViewDelegate.getPosition(viewHolder)
, please use ViewHolder.get*Position
insteadViewDelegate
that does not require ViewHolder
(#296)ItemViewBinder
(#294)ItemViewDelegate
& onCreateViewHolder(context, _)
(#292)com.drakeet.multitype:multitype:4.0.0
MultiTypeAdapter#register(ItemViewBinder)
Type
for Types
to hold datawithKotlinClassLinker
for OneToManyEndpoint
ItemViewBinder#adapterItems
to get or set the items of the associated MultiTypeAdapter
MultiTypeAdapter#items
from List<*>
to List<Any>
ItemViewBinder
to public (#245)payloads
parameter of ItemViewBinder#onBindViewHolder(holder, item, payloads)
to be of List<Any>
typeclazz
parameter of MultiTypeAdapter#register(...)
from Class<? extends T>
to Class<T>
Items
classPreconditions
classMultiTypePool
to MutableTypes
KClassLinker
to KotlinClassLinker
ClassLinker
to JavaClassLinker
OneToManyEndpoint#withKClassLinker(...)
method to withKotlinClassLinker
OneToManyEndpoint#withClassLinker(...)
method to withJavaClassLinker
This migrates MultiType to Kotlin (#253)
MultiTypeAdapter#register(ItemViewBinder)
Type
for TypePool
to hold datawithKotlinClassLinker
for OneToManyEndpoint
ItemViewBinder#adapterItems
to get or set the items of the associated MultiTypeAdapter
MultiTypeAdapter#items
from List<*>
to List<Any>
ItemViewBinder
to public (#245)payloads
parameter of ItemViewBinder#onBindViewHolder(holder, item, payloads)
to be of List<Any>
typeclazz
parameter of MultiTypeAdapter#register(...)
from Class<? extends T>
to Class<T>
MultiTypeAdapter
to final
Items
classPreconditions
classMultiTypePool
to ArrayTypePool
KClassLinker
to KotlinClassLinker
ClassLinker
to JavaClassLinker
OneToManyEndpoint#withKClassLinker(...)
method to withKotlinClassLinker
OneToManyEndpoint#withClassLinker(...)
method to withJavaClassLinker
Some minor changes:
BuildConfig
generationimplementation
to api
BinderNotFoundException
Added library-kotlin
module for Kotlin support (#198)
MultiTypeAdapter
register(binder: ItemViewBinder<T, *>)
register(clazz: KClass<out T>, binder: ItemViewBinder<T, *>)
register(clazz: KClass<out T>): OneToManyFlow<T>
TypePool
register(clazz: KClass<out T>, binder: ItemViewBinder<T, *>, linker: Linker<T>)
unregister(clazz: KClass<out T>)
firstIndexOf(clazz: KClass<out T>)
OneToManyEndpoint
withKClassLinker(classLinker: KClassLinker<T>)
withKClassLinker(classLinker: (position: Int, t: T) -> KClass<out ItemViewBinder<T, *>>)