Skip to content

Commit

Permalink
perf: 新增 QuickViewHolder
Browse files Browse the repository at this point in the history
  • Loading branch information
limuyang2 committed Jul 16, 2022
1 parent 71336d3 commit bbc5bd8
Show file tree
Hide file tree
Showing 14 changed files with 56 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import android.content.Context;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
Expand All @@ -17,7 +16,7 @@
import com.chad.baserecyclerviewadapterhelper.utils.SpannableStringUtils;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.chad.library.adapter.base.viewholder.QuickViewHolder;

/**
* 文 件 名: AnimationAdapter
Expand All @@ -27,21 +26,20 @@
* 修改时间:
* 修改备注:
*/
public class AnimationAdapter extends BaseQuickAdapter<Status, BaseViewHolder> {
public class AnimationAdapter extends BaseQuickAdapter<Status, QuickViewHolder> {

public AnimationAdapter() {
super(DataServer.getSampleData(100));
}

@NonNull
@Override
protected BaseViewHolder onCreateViewHolder(@NonNull Context context, @NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_animation, parent, false);
return new BaseViewHolder(view);
protected QuickViewHolder onCreateViewHolder(@NonNull Context context, @NonNull ViewGroup parent, int viewType) {
return new QuickViewHolder(R.layout.layout_animation , parent);
}

@Override
protected void onBindViewHolder(@NonNull BaseViewHolder holder, int position, Status item) {
protected void onBindViewHolder(@NonNull QuickViewHolder holder, int position, Status item) {
switch (holder.getLayoutPosition() % 3) {
case 0:
holder.setImageResource(R.id.img, R.mipmap.animation_img1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class DataBindingAdapter extends BaseQuickAdapter<Movie, DataBindingHolde
@NonNull
@Override
protected DataBindingHolder<ItemMovieBinding> onCreateViewHolder(@NonNull Context context, @NonNull ViewGroup parent, int viewType) {
return new DataBindingHolder<>(parent, R.layout.item_movie);
return new DataBindingHolder<>(R.layout.item_movie, parent);
}

@Override
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import com.chad.library.adapter.base.animation.*
import com.chad.library.adapter.base.listener.*
import com.chad.library.adapter.base.module.BaseDraggableModule
import com.chad.library.adapter.base.module.DraggableModule
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder
import com.chad.library.adapter.base.viewholder.EmptyLayoutVH

/**
Expand Down Expand Up @@ -403,7 +403,7 @@ abstract class BaseQuickAdapter<T, VH : RecyclerView.ViewHolder>(
*/
fun getViewByPosition(position: Int, @IdRes viewId: Int): View? {
val recyclerView = recyclerViewOrNull ?: return null
val viewHolder = recyclerView.findViewHolderForLayoutPosition(position) as BaseViewHolder?
val viewHolder = recyclerView.findViewHolderForLayoutPosition(position) as QuickViewHolder?
?: return null
return viewHolder.getViewOrNull(viewId)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import android.content.Context
import android.view.View
import android.view.ViewGroup
import androidx.annotation.IdRes
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder

/**
* Binder 的基类
*/
abstract class BaseItemBinder<T, VH : BaseViewHolder> {
abstract class BaseItemBinder<T, VH : QuickViewHolder> {

private val clickViewIds by lazy(LazyThreadSafetyMode.NONE) { ArrayList<Int>() }
private val longClickViewIds by lazy(LazyThreadSafetyMode.NONE) { ArrayList<Int>() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.chad.library.adapter.base.binder
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.databinding.ViewDataBinding
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder

/**
* 使用 DataBinding 快速构建 Binder
Expand All @@ -15,7 +15,7 @@ abstract class QuickDataBindingItemBinder<T, DB : ViewDataBinding> : BaseItemBin
/**
* 此 Holder 不适用于其他 BaseAdapter,仅针对[BaseBinderAdapter]
*/
class BinderDataBindingHolder<DB : ViewDataBinding>(val dataBinding: DB) : BaseViewHolder(dataBinding.root)
class BinderDataBindingHolder<DB : ViewDataBinding>(val dataBinding: DB) : QuickViewHolder(dataBinding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BinderDataBindingHolder<DB> {
return BinderDataBindingHolder(onCreateDataBinding(LayoutInflater.from(parent.context), parent, viewType))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ package com.chad.library.adapter.base.binder
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import com.chad.library.adapter.base.util.getItemView
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder

/**
* 使用布局 ID 快速构建 Binder
* @param T item 数据类型
*/
abstract class QuickItemBinder<T> : BaseItemBinder<T, BaseViewHolder>() {
abstract class QuickItemBinder<T> : BaseItemBinder<T, QuickViewHolder>() {

@LayoutRes
abstract fun getLayoutId(): Int

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder =
BaseViewHolder(parent.getItemView(getLayoutId()))
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuickViewHolder =
QuickViewHolder(parent.getItemView(getLayoutId()))

}

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.chad.library.adapter.base.binder
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.viewbinding.ViewBinding
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder

/**
* 使用 ViewBinding 快速构建 Binder
Expand All @@ -15,7 +15,7 @@ abstract class QuickViewBindingItemBinder<T, VB : ViewBinding> : BaseItemBinder<
/**
* 此 Holder 不适用于其他 BaseAdapter,仅针对[BaseBinderAdapter]
*/
class BinderVBHolder<VB : ViewBinding>(val viewBinding: VB) : BaseViewHolder(viewBinding.root)
class BinderVBHolder<VB : ViewBinding>(val viewBinding: VB) : QuickViewHolder(viewBinding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BinderVBHolder<VB> {
return BinderVBHolder(onCreateViewBinding(LayoutInflater.from(parent.context), parent, viewType))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.chad.library.adapter.base.loadmore

import android.view.View
import android.view.ViewGroup
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder

/**
*
Expand Down Expand Up @@ -30,36 +30,36 @@ abstract class BaseLoadMoreView {
* @param holder BaseViewHolder
* @return View
*/
abstract fun getLoadingView(holder: BaseViewHolder): View
abstract fun getLoadingView(holder: QuickViewHolder): View

/**
* 布局中的 加载完成布局
* @param holder BaseViewHolder
* @return View
*/
abstract fun getLoadComplete(holder: BaseViewHolder): View
abstract fun getLoadComplete(holder: QuickViewHolder): View

/**
* 布局中的 加载结束布局
* @param holder BaseViewHolder
* @return View
*/
abstract fun getLoadEndView(holder: BaseViewHolder): View
abstract fun getLoadEndView(holder: QuickViewHolder): View

/**
* 布局中的 加载失败布局
* @param holder BaseViewHolder
* @return View
*/
abstract fun getLoadFailView(holder: BaseViewHolder): View
abstract fun getLoadFailView(holder: QuickViewHolder): View

/**
* 可重写此方式,实行自定义逻辑
* @param holder BaseViewHolder
* @param position Int
* @param loadMoreStatus LoadMoreStatus
*/
open fun convert(holder: BaseViewHolder, position: Int, loadMoreStatus: LoadMoreStatus) {
open fun convert(holder: QuickViewHolder, position: Int, loadMoreStatus: LoadMoreStatus) {
when (loadMoreStatus) {
LoadMoreStatus.Complete -> {
getLoadingView(holder).isVisible(false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ package com.chad.library.adapter.base.loadmore
import android.view.View
import android.view.ViewGroup
import com.chad.library.R
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.chad.library.adapter.base.viewholder.QuickViewHolder
import com.chad.library.adapter.base.util.getItemView

class SimpleLoadMoreView : BaseLoadMoreView() {

override fun getRootView(parent: ViewGroup): View =
parent.getItemView(R.layout.brvah_quick_view_load_more)

override fun getLoadingView(holder: BaseViewHolder): View =
override fun getLoadingView(holder: QuickViewHolder): View =
holder.getView(R.id.load_more_loading_view)

override fun getLoadComplete(holder: BaseViewHolder): View =
override fun getLoadComplete(holder: QuickViewHolder): View =
holder.getView(R.id.load_more_load_complete_view)

override fun getLoadEndView(holder: BaseViewHolder): View =
override fun getLoadEndView(holder: QuickViewHolder): View =
holder.getView(R.id.load_more_load_end_view)

override fun getLoadFailView(holder: BaseViewHolder): View =
override fun getLoadFailView(holder: QuickViewHolder): View =
holder.getView(R.id.load_more_load_fail_view)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import com.chad.library.adapter.base.dragswipe.DragAndSwipeCallback
import com.chad.library.adapter.base.listener.DraggableListenerImp
import com.chad.library.adapter.base.listener.OnItemDragListener
import com.chad.library.adapter.base.listener.OnItemSwipeListener
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import java.util.*

/**
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public DataBindingHolder(@NonNull View itemView) {
throw new NullPointerException("DataBinding is Null. Please check Layout resource or ItemView");
}

public DataBindingHolder(@NonNull ViewGroup parent, @LayoutRes int resId) {
public DataBindingHolder(@LayoutRes int resId, @NonNull ViewGroup parent) {
this(LayoutInflater.from(parent.getContext()).inflate(resId, parent, false));
}

Expand Down
Loading

0 comments on commit bbc5bd8

Please sign in to comment.