diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/animation/adapter/AnimationAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/animation/adapter/AnimationAdapter.kt index 9f7b32df2..eee6534ca 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/animation/adapter/AnimationAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/animation/adapter/AnimationAdapter.kt @@ -35,7 +35,7 @@ class AnimationAdapter : return QuickViewHolder(R.layout.layout_animation, parent) } - override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: Status?) { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: Status) { when (holder.layoutPosition % 3) { 0 -> holder.setImageResource(R.id.img, R.mipmap.animation_img1) 1 -> holder.setImageResource(R.id.img, R.mipmap.animation_img2) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/databinding/adapter/DataBindingAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/databinding/adapter/DataBindingAdapter.java index 2fa33b856..da4fb113d 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/databinding/adapter/DataBindingAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/databinding/adapter/DataBindingAdapter.java @@ -4,7 +4,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import com.chad.baserecyclerviewadapterhelper.R; import com.chad.baserecyclerviewadapterhelper.databinding.ItemMovieBinding; @@ -30,9 +29,7 @@ protected DataBindingHolder onCreateViewHolder(@NonNull Contex } @Override - protected void onBindViewHolder(@NonNull DataBindingHolder holder, int position, @Nullable Movie item) { - if (item == null) return; - + protected void onBindViewHolder(@NonNull DataBindingHolder holder, int position, @NonNull Movie item) { // 获取 Binding ItemMovieBinding binding = holder.getBinding(); binding.setMovie(item); diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/DiffDragAndSwipeAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/DiffDragAndSwipeAdapter.kt index 07f474caf..215f4d071 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/DiffDragAndSwipeAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/DiffDragAndSwipeAdapter.kt @@ -21,10 +21,8 @@ class DiffDragAndSwipeAdapter : } override fun onBindViewHolder( - holder: QuickViewHolder, position: Int, item: DiffEntity? + holder: QuickViewHolder, position: Int, item: DiffEntity ) { - if (item == null) return - holder.setText(R.id.tweetName, item.title) .setText(R.id.tweetText, item.content) .setText(R.id.tweetDate, item.date) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/HeaderDragAndSwipeAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/HeaderDragAndSwipeAdapter.kt index 3f7e99675..b16a15e5f 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/HeaderDragAndSwipeAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/dragswipe/adapter/HeaderDragAndSwipeAdapter.kt @@ -21,7 +21,7 @@ open class HeaderDragAndSwipeAdapter : BaseQuickAdapter return QuickViewHolder(R.layout.item_draggable_view, parent) } - override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: String?) { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: String) { when (holder.layoutPosition % 3) { 0 -> holder.setImageResource(R.id.iv_head, R.mipmap.head_img0) 1 -> holder.setImageResource(R.id.iv_head, R.mipmap.head_img1) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/emptyview/adapter/EmptyViewAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/emptyview/adapter/EmptyViewAdapter.kt index f9bd35f37..b7634b805 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/emptyview/adapter/EmptyViewAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/emptyview/adapter/EmptyViewAdapter.kt @@ -22,7 +22,7 @@ class EmptyViewAdapter : BaseQuickAdapter() { return VH(parent) } - override fun onBindViewHolder(holder: VH, position: Int, item: Status?) { + override fun onBindViewHolder(holder: VH, position: Int, item: Status) { when (holder.layoutPosition % 3) { 0 -> holder.binding.img.setImageResource(R.mipmap.animation_img1) 1 -> holder.binding.img.setImageResource(R.mipmap.animation_img2) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/FooterAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/FooterAdapter.kt index 42eb3b7bf..7055e3bc1 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/FooterAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/FooterAdapter.kt @@ -3,18 +3,22 @@ package com.chad.baserecyclerviewadapterhelper.activity.headerfooter.adapter import android.content.Context import android.view.ViewGroup import com.chad.baserecyclerviewadapterhelper.R -import com.chad.library.adapter.base.BaseSingleItemAdapter +import com.chad.library.adapter.base.SimpleSingleItemAdapter import com.chad.library.adapter.base.viewholder.QuickViewHolder class FooterAdapter( private val isDelete: Boolean -) : BaseSingleItemAdapter() { +) : SimpleSingleItemAdapter() { - override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): QuickViewHolder { + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { return QuickViewHolder(R.layout.footer_view, parent) } - override fun onBindViewHolder(holder: QuickViewHolder, item: Any?) { + override fun onBindViewHolder(holder: QuickViewHolder) { if (isDelete) { holder.setImageResource(R.id.iv, R.mipmap.rm_icon) } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/HeaderAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/HeaderAdapter.kt index 0bd4db1bb..4a03e0e93 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/HeaderAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/headerfooter/adapter/HeaderAdapter.kt @@ -6,18 +6,14 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.chad.baserecyclerviewadapterhelper.R -import com.chad.library.adapter.base.BaseSingleItemAdapter +import com.chad.library.adapter.base.SimpleSingleItemAdapter -class HeaderAdapter: BaseSingleItemAdapter() { +class HeaderAdapter : SimpleSingleItemAdapter() { - class VH(view: View): RecyclerView.ViewHolder(view) + class VH(view: View) : RecyclerView.ViewHolder(view) override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { val view = LayoutInflater.from(parent.context).inflate(R.layout.head_view, parent, false) return VH(view) } - - override fun onBindViewHolder(holder: VH, item: Any?) { - - } } \ No newline at end of file diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeAdapter.kt index 6dddfacab..4e1404d14 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeAdapter.kt @@ -27,8 +27,7 @@ class HomeAdapter(data: List) : BaseMultiItemAdapter(dat return ItemVH(viewBinding) } - override fun onBind(holder: ItemVH, position: Int, item: HomeEntity?) { - if (item == null) return + override fun onBind(holder: ItemVH, position: Int, item: HomeEntity) { holder.viewBinding.textView.text = item.name holder.viewBinding.icon.setImageResource(item.imageResource) } @@ -39,9 +38,7 @@ class HomeAdapter(data: List) : BaseMultiItemAdapter(dat return HeaderVH(viewBinding) } - override fun onBind(holder: HeaderVH, position: Int, item: HomeEntity?) { - if (item == null) return - + override fun onBind(holder: HeaderVH, position: Int, item: HomeEntity) { holder.viewBinding.more.visibility = View.GONE holder.viewBinding.header.text = item.sectionTitle } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeTopHeaderAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeTopHeaderAdapter.kt index 62d11f259..0b2d48594 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeTopHeaderAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/home/adapter/HomeTopHeaderAdapter.kt @@ -6,10 +6,11 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.chad.baserecyclerviewadapterhelper.R -import com.chad.library.adapter.base.BaseSingleItemAdapter +import com.chad.library.adapter.base.SimpleSingleItemAdapter import com.chad.library.adapter.base.fullspan.FullSpanAdapterType -class HomeTopHeaderAdapter : BaseSingleItemAdapter(), FullSpanAdapterType { +class HomeTopHeaderAdapter : SimpleSingleItemAdapter(), + FullSpanAdapterType { companion object { val HEAD_VIEWTYPE = 0x10000556 @@ -21,9 +22,6 @@ class HomeTopHeaderAdapter : BaseSingleItemAdapter return VH(LayoutInflater.from(parent.context).inflate(R.layout.top_view, parent, false)) } - override fun onBindViewHolder(holder: VH, item: Any?) { - } - override fun getItemViewType(position: Int, list: List): Int { return HEAD_VIEWTYPE } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/loadmore/adapter/RecyclerViewAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/loadmore/adapter/RecyclerViewAdapter.kt index d401b2452..d5494debf 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/loadmore/adapter/RecyclerViewAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/loadmore/adapter/RecyclerViewAdapter.kt @@ -34,7 +34,7 @@ class RecyclerViewAdapter : BaseQuickAdapter() { return VH(parent) } - protected override fun onBindViewHolder(holder: VH, position: Int, item: Status?) { + protected override fun onBindViewHolder(holder: VH, position: Int, item: Status) { when (holder.layoutPosition % 3) { 0 -> holder.viewBinding.img.setImageResource(R.mipmap.animation_img1) 1 -> holder.viewBinding.img.setImageResource(R.mipmap.animation_img2) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/scene/adapter/GroupAdapter.kt b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/scene/adapter/GroupAdapter.kt index 9036f0f48..bbeabdf6f 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/scene/adapter/GroupAdapter.kt +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/scene/adapter/GroupAdapter.kt @@ -28,9 +28,7 @@ class GroupAdapter : BaseQuickAdapter(){ return VH(parent) } - override fun onBindViewHolder(holder: VH, position: Int, item: GroupDemoEntity.Group?) { - if (item == null) return - + override fun onBindViewHolder(holder: VH, position: Int, item: GroupDemoEntity.Group) { holder.binding.tvTitle.text = item.title holder.binding.tvContent.text = item.content diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt index 19ec4ce2e..1fc070dcd 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemAdapter.kt @@ -31,12 +31,12 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : } } - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, item: T?) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, item: T) { findListener(holder)?.onBind(holder, position, item) } override fun onBindViewHolder( - holder: RecyclerView.ViewHolder, position: Int, item: T?, payloads: List + holder: RecyclerView.ViewHolder, position: Int, item: T, payloads: List ) { if (payloads.isEmpty()) { onBindViewHolder(holder, position, item) @@ -115,9 +115,9 @@ abstract class BaseMultiItemAdapter(items: List = emptyList()) : interface OnMultiItemAdapterListener { fun onCreate(context: Context, parent: ViewGroup, viewType: Int): V - fun onBind(holder: V, position: Int, item: T?) + fun onBind(holder: V, position: Int, item: T) - fun onBind(holder: V, position: Int, item: T?, payloads: List) { + fun onBind(holder: V, position: Int, item: T, payloads: List) { onBind(holder, position, item) } diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt index ab84db810..94b1a2b0c 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt @@ -148,7 +148,7 @@ abstract class BaseQuickAdapter( * @param holder A fully initialized helper. * @param item The item that needs to be displayed. */ - protected abstract fun onBindViewHolder(holder: VH, position: Int, item: T?) + protected abstract fun onBindViewHolder(holder: VH, position: Int, item: T) /** * Optional implementation this method and use the helper to adapt the view to the given item. @@ -162,7 +162,7 @@ abstract class BaseQuickAdapter( * @param item The item that needs to be displayed. * @param payloads payload info. */ - protected open fun onBindViewHolder(holder: VH, position: Int, item: T?, payloads: List) { + protected open fun onBindViewHolder(holder: VH, position: Int, item: T, payloads: List) { onBindViewHolder(holder, position, item) } @@ -397,13 +397,13 @@ abstract class BaseQuickAdapter( /** * Get the data item associated with the specified position in the data set. - * 获取与数据集中指定位置的数据项。如果未找到数据,则返回 null + * 获取与数据集中指定位置的数据项。 * * @param position Position of the item whose data we want within the adapter's * data set. * @return The data at the specified position. */ - fun getItem(@IntRange(from = 0) position: Int): T? = items.getOrNull(position) + open fun getItem(@IntRange(from = 0) position: Int): T = items[position] /** * 获取对应首个匹配的 item 数据的索引。如果返回 -1,表示不存在 diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseSingleItemAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseSingleItemAdapter.kt index 4ce7f80bb..8f2c8615e 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseSingleItemAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseSingleItemAdapter.kt @@ -2,6 +2,23 @@ package com.chad.library.adapter.base import androidx.recyclerview.widget.RecyclerView +abstract class SimpleSingleItemAdapter() : + BaseSingleItemAdapter(null) { + + protected open fun onBindViewHolder(holder: VH) {} + final override fun onBindViewHolder(holder: VH, item: Any?) { + onBindViewHolder(holder) + } + + open fun onBindViewHolder(holder: VH, payloads: List) { + onBindViewHolder(holder) + } + + final override fun onBindViewHolder(holder: VH, item: Any?, payloads: List) { + onBindViewHolder(holder, payloads) + } +} + /** * Adapter for single item * 只有单个/一个 item 情况下的 Adapter @@ -10,34 +27,38 @@ import androidx.recyclerview.widget.RecyclerView * @param VH viewHolder类型 type of the viewHolder * @property mItem 数据 data */ -abstract class BaseSingleItemAdapter(private var mItem: T? = null) : - BaseQuickAdapter() { +abstract class BaseSingleItemAdapter(private var mItem: T) : + BaseQuickAdapter() { - protected abstract fun onBindViewHolder(holder: VH, item: T?) + protected abstract fun onBindViewHolder(holder: VH, item: T) - open fun onBindViewHolder(holder: VH, item: T?, payloads: List) { + open fun onBindViewHolder(holder: VH, item: T, payloads: List) { onBindViewHolder(holder, item) } - final override fun onBindViewHolder(holder: VH, position: Int, item: Any?) { + final override fun onBindViewHolder(holder: VH, position: Int, item: T) { onBindViewHolder(holder, mItem) } - final override fun onBindViewHolder(holder: VH, position: Int, item: Any?, payloads: List) { + final override fun onBindViewHolder(holder: VH, position: Int, item: T, payloads: List) { onBindViewHolder(holder, mItem, payloads) } - final override fun getItemCount(items: List): Int { + final override fun getItemCount(items: List): Int { return 1 } + override fun getItem(position: Int): T { + return mItem + } + /** * 设置 item 数据(payload 方式) * * @param t * @param payload */ - fun setItem(t: T?, payload: Any?) { + fun setItem(t: T, payload: Any?) { mItem = t notifyItemChanged(0, payload) } @@ -45,34 +66,34 @@ abstract class BaseSingleItemAdapter(private va /** * 获取/设置 item 数据 */ - var item: T? + var item: T get() = mItem set(value) { mItem = value notifyItemChanged(0) } - override fun submitList(list: List?) { + override fun submitList(list: List?) { throw RuntimeException("Please use setItem()") } - override fun add(data: Any?) { + override fun add(data: T) { throw RuntimeException("Please use setItem()") } - override fun add(position: Int, data: Any?) { + override fun add(position: Int, data: T) { throw RuntimeException("Please use setItem()") } - override fun addAll(collection: Collection) { + override fun addAll(collection: Collection) { throw RuntimeException("Please use setItem()") } - override fun addAll(position: Int, collection: Collection) { + override fun addAll(position: Int, collection: Collection) { throw RuntimeException("Please use setItem()") } - override fun remove(data: Any?) { + override fun remove(data: T) { throw RuntimeException("Please use setItem()") } @@ -80,7 +101,7 @@ abstract class BaseSingleItemAdapter(private va throw RuntimeException("Please use setItem()") } - override fun set(position: Int, data: Any?) { + override fun set(position: Int, data: T) { throw RuntimeException("Please use setItem()") } } \ No newline at end of file