update RvAdapter

androidx
Zhanty 5 years ago
parent 4460f4dbdb
commit bb3620ddf3
  1. 24
      lib_base/src/main/java/com/android/base/adapter/recycler/SimpleRecyclerAdapter.kt

@ -15,12 +15,12 @@ import com.android.base.kotlin.KtViewHolder
*/ */
abstract class SimpleRecyclerAdapter<T>(context: Context, data: List<T>? = null) : RecyclerAdapter<T, KtViewHolder>(context, data) { abstract class SimpleRecyclerAdapter<T>(context: Context, data: List<T>? = null) : RecyclerAdapter<T, KtViewHolder>(context, data) {
private var mLayoutInflater: LayoutInflater = LayoutInflater.from(mContext) private var layoutInflater: LayoutInflater = LayoutInflater.from(mContext)
final override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KtViewHolder { final override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KtViewHolder {
val layout = provideLayout(parent, viewType) val layout = provideLayout(parent, viewType)
val itemView = if (layout is Int) { val itemView = if (layout is Int) {
mLayoutInflater.inflate(layout, parent, false) layoutInflater.inflate(layout, parent, false)
} else } else
layout as View layout as View
return KtViewHolder(itemView).apply { return KtViewHolder(itemView).apply {
@ -28,31 +28,15 @@ abstract class SimpleRecyclerAdapter<T>(context: Context, data: List<T>? = null)
} }
} }
protected fun onViewHolderCreated(ktViewHolder: KtViewHolder) { protected open fun onViewHolderCreated(viewHolder: KtViewHolder) = Unit
}
/**provide a layout id or a View*/ /**provide a layout id or a View*/
abstract fun provideLayout(parent: ViewGroup, viewType: Int): Any abstract fun provideLayout(parent: ViewGroup, viewType: Int): Any
override fun getItemViewType(position: Int): Int {
return TYPE_ITEM
}
override fun onBindViewHolder(viewHolder: KtViewHolder, position: Int) { override fun onBindViewHolder(viewHolder: KtViewHolder, position: Int) {
if (viewHolder.itemViewType == TYPE_ITEM) { bind(viewHolder, getItem(position))
bind(viewHolder, getItem(position))
} else {
bindOtherTypes(viewHolder, position)
}
} }
protected abstract fun bind(viewHolder: KtViewHolder, item: T) protected abstract fun bind(viewHolder: KtViewHolder, item: T)
protected open fun bindOtherTypes(viewHolder: ViewHolder, position: Int) {}
companion object {
protected const val TYPE_ITEM = 0
}
} }
Loading…
Cancel
Save