提交 e967b1ac 编写于 作者: limuyang2's avatar limuyang2

add `getItemProvider()`

上级 64444494
......@@ -21,7 +21,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
abstract class BaseProviderMultiAdapter<T>(data: MutableList<T>? = null) :
BaseQuickAdapter<T, BaseViewHolder>(0, data) {
private val mItemProviders by lazy { SparseArray<BaseItemProvider<T>>() }
private val mItemProviders by lazy(LazyThreadSafetyMode.NONE) { SparseArray<BaseItemProvider<T>>() }
/**
* 返回 item 类型
......@@ -41,7 +41,7 @@ abstract class BaseProviderMultiAdapter<T>(data: MutableList<T>? = null) :
}
override fun onCreateDefViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val provider = mItemProviders.get(viewType)
val provider = getItemProvider(viewType)
checkNotNull(provider) { "ViewType: $viewType no such provider found,please use addItemProvider() first!" }
provider.context = parent.context
return provider.onCreateViewHolder(parent).apply {
......@@ -54,11 +54,11 @@ abstract class BaseProviderMultiAdapter<T>(data: MutableList<T>? = null) :
}
override fun convert(helper: BaseViewHolder, item: T?) {
mItemProviders.get(helper.itemViewType).convert(helper, item)
getItemProvider(helper.itemViewType)!!.convert(helper, item)
}
override fun convert(helper: BaseViewHolder, item: T?, payloads: List<Any>) {
mItemProviders.get(helper.itemViewType).convert(helper, item, payloads)
getItemProvider(helper.itemViewType)!!.convert(helper, item, payloads)
}
override fun bindViewClickListener(viewHolder: BaseViewHolder, viewType: Int) {
......@@ -67,6 +67,10 @@ abstract class BaseProviderMultiAdapter<T>(data: MutableList<T>? = null) :
bindChildClick(viewHolder, viewType)
}
protected open fun getItemProvider(viewType: Int): BaseItemProvider<T>? {
return mItemProviders.get(viewType)
}
protected open fun bindClick(viewHolder: BaseViewHolder) {
if (getOnItemClickListener() == null) {
//如果没有设置点击监听,则回调给 itemProvider
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册