Skip to content

Commit 90f360e

Browse files
author
limuyang
committed
# fix:
- `setList` bug
1 parent 3573400 commit 90f360e

File tree

9 files changed

+46
-26
lines changed

9 files changed

+46
-26
lines changed

app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/ItemClickActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ protected void onCreate(Bundle savedInstanceState) {
4343
initAdapter();
4444
adapter.setOnItemClickListener(new OnItemClickListener() {
4545
@Override
46-
public void onItemClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
46+
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
4747
Tips.show("onItemClick " + position);
4848
}
4949
});

app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/multi/BinderUseActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public ItemImgTextViewBinding onCreateViewBinding(@NotNull LayoutInflater layout
152152

153153
@Override
154154
public void convert(@NotNull BinderVBHolder<ItemImgTextViewBinding> holder, Video data) {
155-
holder.getViewBinding().tv.setText(data.getName());
155+
holder.getViewBinding().tv.setText("(ViewBinding) " + data.getName());
156156
}
157157

158158
/**

app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/multi/BinderAdapter.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/FirstProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
import com.chad.baserecyclerviewadapterhelper.R;
1010
import com.chad.baserecyclerviewadapterhelper.adapter.node.tree.NodeTreeAdapter;
1111
import com.chad.baserecyclerviewadapterhelper.entity.node.tree.FirstNode;
12+
import com.chad.baserecyclerviewadapterhelper.entity.node.tree.SecondNode;
1213
import com.chad.library.adapter.base.entity.node.BaseNode;
1314
import com.chad.library.adapter.base.provider.BaseNodeProvider;
1415
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
1516

1617
import org.jetbrains.annotations.NotNull;
1718

19+
import java.util.ArrayList;
1820
import java.util.List;
1921

2022
public class FirstProvider extends BaseNodeProvider {
@@ -77,6 +79,8 @@ private void setArrowSpin(BaseViewHolder helper, BaseNode data, boolean isAnimat
7779
@Override
7880
public void onClick(@NotNull BaseViewHolder helper, @NotNull View view, BaseNode data, int position) {
7981
// 这里使用payload进行增量刷新(避免整个item刷新导致的闪烁,不自然)
80-
getAdapter().expandOrCollapse(position, true, true, NodeTreeAdapter.EXPAND_COLLAPSE_PAYLOAD);
82+
// getAdapter().expandOrCollapse(position, true, true, NodeTreeAdapter.EXPAND_COLLAPSE_PAYLOAD);
83+
getAdapter().nodeAddData(data,new SecondNode(new ArrayList<>(),"p:"+position));
84+
getAdapter().notifyDataSetChanged();
8185
}
8286
}

app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/SecondProvider.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,15 @@ public void convert(@NotNull BaseViewHolder helper, @NotNull BaseNode data) {
3636

3737
@Override
3838
public void onClick(@NotNull BaseViewHolder helper, @NotNull View view, BaseNode data, int position) {
39-
SecondNode entity = (SecondNode) data;
40-
if (entity.isExpanded()) {
41-
getAdapter().collapse(position);
42-
} else {
43-
getAdapter().expandAndCollapseOther(position);
44-
}
39+
// SecondNode entity = (SecondNode) data;
40+
// if (entity.isExpanded()) {
41+
// getAdapter().collapse(position);
42+
// } else {
43+
// getAdapter().expandAndCollapseOther(position);
44+
// }
45+
46+
// BaseNode fNode = getAdapter().findParentNode(position);
47+
// getAdapter().nodeRemoveData();
48+
// getAdapter().notifyItemRemoved(position);
4549
}
4650
}

library/src/main/java/com/chad/library/adapter/base/BaseBinderAdapter.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
1313
* 使用 Binder 来实现adapter,既可以实现单布局,也能实现多布局
1414
* 数据实体类也不存继承问题
1515
*
16+
* 当有多种条目的时候,避免在convert()中做太多的业务逻辑,把逻辑放在对应的 BaseItemBinder 中。
17+
* 适用于以下情况:
18+
* 1、实体类不方便扩展,此Adapter的数据类型可以是任意类型,默认情况下不需要实现 getItemType
19+
* 2、item 类型较多,在convert()中管理起来复杂
20+
*
21+
* ViewHolder 由 [BaseItemBinder] 实现,并且每个[BaseItemBinder]可以拥有自己类型的ViewHolder类型。
22+
*
1623
* 数据类型为Any
1724
*/
1825
open class BaseBinderAdapter(list: MutableList<Any>? = null) : BaseQuickAdapter<Any, BaseViewHolder>(0, list) {
@@ -79,9 +86,7 @@ open class BaseBinderAdapter(list: MutableList<Any>? = null) : BaseQuickAdapter<
7986
}
8087

8188
override fun getDefItemViewType(position: Int): Int {
82-
val type = mTypeMap[data[position].javaClass]
83-
checkNotNull(type) { "getDefItemViewType: index: $position - type: ${data[position].javaClass} Not Find!" }
84-
return type
89+
return findViewType(data[position].javaClass)
8590
}
8691

8792
override fun bindViewClickListener(viewHolder: BaseViewHolder, viewType: Int) {
@@ -105,6 +110,12 @@ open class BaseBinderAdapter(list: MutableList<Any>? = null) : BaseQuickAdapter<
105110
return getItemBinderOrNull(holder.itemViewType)?.onFailedToRecycleView(holder) ?: false
106111
}
107112

113+
protected fun findViewType(clazz : Class<*>):Int {
114+
val type = mTypeMap[clazz]
115+
checkNotNull(type) { "findViewType: ViewType: $clazz Not Find!" }
116+
return type
117+
}
118+
108119
protected open fun bindClick(viewHolder: BaseViewHolder) {
109120
if (getOnItemClickListener() == null) {
110121
//如果没有设置点击监听,则回调给 itemProvider

library/src/main/java/com/chad/library/adapter/base/BaseProviderMultiAdapter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
1818
* @param T data 数据类型
1919
* @constructor
2020
*/
21+
@Deprecated("please use Class BaseBinderAdapter")
2122
abstract class BaseProviderMultiAdapter<T>(data: MutableList<T>? = null) :
2223
BaseQuickAdapter<T, BaseViewHolder>(0, data) {
2324

library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import java.lang.reflect.InvocationTargetException
3232
import java.lang.reflect.Modifier
3333
import java.lang.reflect.ParameterizedType
3434
import java.util.*
35+
import kotlin.collections.ArrayList
3536

3637
/**
3738
* 获取模块
@@ -1158,17 +1159,24 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
11581159
* @param list Collection<T>?
11591160
*/
11601161
open fun setList(list: Collection<T>?) {
1161-
// 不是同一个引用才清空列表
11621162
if (list !== this.data) {
11631163
this.data.clear()
11641164
if (!list.isNullOrEmpty()) {
11651165
this.data.addAll(list)
11661166
}
1167-
mLoadMoreModule?.reset()
1168-
mLastPosition = -1
1169-
notifyDataSetChanged()
1170-
mLoadMoreModule?.checkDisableLoadMoreIfNotFullPage()
1167+
} else {
1168+
if (!list.isNullOrEmpty()) {
1169+
val newList = ArrayList(list)
1170+
this.data.clear()
1171+
this.data.addAll(newList)
1172+
} else {
1173+
this.data.clear()
1174+
}
11711175
}
1176+
mLoadMoreModule?.reset()
1177+
mLastPosition = -1
1178+
notifyDataSetChanged()
1179+
mLoadMoreModule?.checkDisableLoadMoreIfNotFullPage()
11721180
}
11731181

11741182
/**

library/src/main/java/com/chad/library/adapter/base/listener/OnItemClickListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ public interface OnItemClickListener {
2222
* will be a view provided by the adapter)
2323
* @param position The position of the view in the adapter.
2424
*/
25-
void onItemClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position);
25+
void onItemClick(@NonNull BaseQuickAdapter<?,?> adapter, @NonNull View view, int position);
2626
}

0 commit comments

Comments
 (0)