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

perf: BaseQuickAdapter 代码整理;

update kotlin 1.4.21;

去除 `weakRecyclerview` 属性;
上级 bfc16a53
buildscript {
ext.kotlin_version = '1.4.10'
ext.kotlin_version = '1.4.21'
repositories {
google()
jcenter()
......
......@@ -42,5 +42,7 @@ task sourcesJar(type: Jar) {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.annotation:annotation:1.1.0'
compileOnly 'androidx.recyclerview:recyclerview:1.1.0'
}
......@@ -26,7 +26,6 @@ import com.chad.library.adapter.base.listener.*
import com.chad.library.adapter.base.module.*
import com.chad.library.adapter.base.util.getItemView
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import java.lang.ref.WeakReference
import java.lang.reflect.Constructor
import java.lang.reflect.InvocationTargetException
import java.lang.reflect.Modifier
......@@ -75,7 +74,7 @@ private interface BaseQuickAdapterModuleImp {
abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
@JvmOverloads constructor(@LayoutRes private val layoutResId: Int,
data: MutableList<T>? = null)
: RecyclerView.Adapter<VH>(), BaseQuickAdapterModuleImp, BaseListenerImp {
: RecyclerView.Adapter<VH>(), BaseQuickAdapterModuleImp {
companion object {
const val HEADER_VIEW = 0x10000111
......@@ -174,20 +173,15 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
private var mDraggableModule: BaseDraggableModule? = null
internal var mLoadMoreModule: BaseLoadMoreModule? = null
@Deprecated("Please use recyclerView", replaceWith = ReplaceWith("recyclerView"))
lateinit var weakRecyclerView: WeakReference<RecyclerView>
var recyclerViewOrNull: RecyclerView? = null
private set
internal var mRecyclerView: RecyclerView? = null
var recyclerView: RecyclerView
set(value) {
mRecyclerView = value
}
val recyclerView: RecyclerView
get() {
checkNotNull(mRecyclerView) {
checkNotNull(recyclerViewOrNull) {
"Please get it after onAttachedToRecyclerView()"
}
return mRecyclerView!!
return recyclerViewOrNull!!
}
val context: Context
......@@ -422,8 +416,7 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
weakRecyclerView = WeakReference(recyclerView)
mRecyclerView = recyclerView
recyclerViewOrNull = recyclerView
mDraggableModule?.attachToRecyclerView(recyclerView)
......@@ -455,7 +448,7 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {
super.onDetachedFromRecyclerView(recyclerView)
mRecyclerView = null
recyclerViewOrNull = null
}
protected open fun isFixedViewType(type: Int): Boolean {
......@@ -766,7 +759,7 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
* bind [RecyclerView.setAdapter] before use!
*/
fun getViewByPosition(position: Int, @IdRes viewId: Int): View? {
val recyclerView = mRecyclerView ?: return null
val recyclerView = recyclerViewOrNull ?: return null
val viewHolder = recyclerView.findViewHolderForLayoutPosition(position) as BaseViewHolder?
?: return null
return viewHolder.getViewOrNull(viewId)
......@@ -1038,7 +1031,7 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
}
fun setEmptyView(layoutResId: Int) {
mRecyclerView?.let {
recyclerViewOrNull?.let {
val view = LayoutInflater.from(it.context).inflate(layoutResId, it, false)
setEmptyView(view)
}
......@@ -1370,23 +1363,23 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
/************************************** Set Listener ****************************************/
override fun setGridSpanSizeLookup(spanSizeLookup: GridSpanSizeLookup?) {
fun setGridSpanSizeLookup(spanSizeLookup: GridSpanSizeLookup?) {
this.mSpanSizeLookup = spanSizeLookup
}
override fun setOnItemClickListener(listener: OnItemClickListener?) {
fun setOnItemClickListener(listener: OnItemClickListener?) {
this.mOnItemClickListener = listener
}
override fun setOnItemLongClickListener(listener: OnItemLongClickListener?) {
fun setOnItemLongClickListener(listener: OnItemLongClickListener?) {
this.mOnItemLongClickListener = listener
}
override fun setOnItemChildClickListener(listener: OnItemChildClickListener?) {
fun setOnItemChildClickListener(listener: OnItemChildClickListener?) {
this.mOnItemChildClickListener = listener
}
override fun setOnItemChildLongClickListener(listener: OnItemChildLongClickListener?) {
fun setOnItemChildLongClickListener(listener: OnItemChildLongClickListener?) {
this.mOnItemChildLongClickListener = listener
}
......
package com.chad.library.adapter.base.listener;
import androidx.annotation.Nullable;
/**
* @author: limuyang
* @date: 2019-12-03
* @Description: BaseQuickAdapter需要设置的接口。使用java定义,以兼容java写法
*/
public interface BaseListenerImp {
/**
* Register a callback to be invoked when an item in this RecyclerView has
* been clicked.
*
* @param listener The callback that will be invoked.
*/
void setOnItemClickListener(@Nullable OnItemClickListener listener);
void setOnItemLongClickListener(@Nullable OnItemLongClickListener listener);
void setOnItemChildClickListener(@Nullable OnItemChildClickListener listener);
void setOnItemChildLongClickListener(@Nullable OnItemChildLongClickListener listener);
void setGridSpanSizeLookup(@Nullable GridSpanSizeLookup spanSizeLookup);
}
......@@ -21,5 +21,5 @@ public interface OnItemChildLongClickListener {
* @param position The position of the view int the adapter
* @return true if the callback consumed the long click ,false otherwise
*/
boolean onItemChildLongClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position);
boolean onItemChildLongClick(@NonNull BaseQuickAdapter<?,?> adapter, @NonNull View view, int position);
}
......@@ -21,5 +21,5 @@ public interface OnItemLongClickListener {
* @param position The position of the view int the adapter
* @return true if the callback consumed the long click ,false otherwise
*/
boolean onItemLongClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position);
boolean onItemLongClick(@NonNull BaseQuickAdapter<?,?> adapter, @NonNull View view, int position);
}
......@@ -176,7 +176,7 @@ open class BaseLoadMoreModule(private val baseQuickAdapter: BaseQuickAdapter<*,
*/
private fun invokeLoadMoreListener() {
loadMoreStatus = LoadMoreStatus.Loading
baseQuickAdapter.mRecyclerView?.let {
baseQuickAdapter.recyclerViewOrNull?.let {
it.post { mLoadMoreListener?.onLoadMore() }
} ?: mLoadMoreListener?.onLoadMore()
}
......@@ -194,7 +194,7 @@ open class BaseLoadMoreModule(private val baseQuickAdapter: BaseQuickAdapter<*,
}
// 先把标记位设置为false
mNextLoadEnable = false
val recyclerView = baseQuickAdapter.mRecyclerView ?: return
val recyclerView = baseQuickAdapter.recyclerViewOrNull ?: return
val manager = recyclerView.layoutManager ?: return
if (manager is LinearLayoutManager) {
recyclerView.postDelayed({
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册