Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
儿歌八万首
BaseRecyclerViewAdapterHelper
提交
90f360e7
B
BaseRecyclerViewAdapterHelper
项目概览
儿歌八万首
/
BaseRecyclerViewAdapterHelper
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
BaseRecyclerViewAdapterHelper
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
90f360e7
编写于
3月 28, 2020
作者:
limuyang2
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
# fix:
- `setList` bug
上级
3573400b
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
46 addition
and
26 deletion
+46
-26
app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/ItemClickActivity.java
...recyclerviewadapterhelper/activity/ItemClickActivity.java
+1
-1
app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/multi/BinderUseActivity.java
...erviewadapterhelper/activity/multi/BinderUseActivity.java
+1
-1
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/multi/BinderAdapter.kt
...erecyclerviewadapterhelper/adapter/multi/BinderAdapter.kt
+0
-8
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/FirstProvider.java
...apterhelper/adapter/node/tree/provider/FirstProvider.java
+5
-1
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/SecondProvider.java
...pterhelper/adapter/node/tree/provider/SecondProvider.java
+10
-6
library/src/main/java/com/chad/library/adapter/base/BaseBinderAdapter.kt
...n/java/com/chad/library/adapter/base/BaseBinderAdapter.kt
+14
-3
library/src/main/java/com/chad/library/adapter/base/BaseProviderMultiAdapter.kt
...com/chad/library/adapter/base/BaseProviderMultiAdapter.kt
+1
-0
library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt
...in/java/com/chad/library/adapter/base/BaseQuickAdapter.kt
+13
-5
library/src/main/java/com/chad/library/adapter/base/listener/OnItemClickListener.java
...ad/library/adapter/base/listener/OnItemClickListener.java
+1
-1
未找到文件。
app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/ItemClickActivity.java
浏览文件 @
90f360e7
...
...
@@ -43,7 +43,7 @@ public class ItemClickActivity extends BaseActivity {
initAdapter
();
adapter
.
setOnItemClickListener
(
new
OnItemClickListener
()
{
@Override
public
void
onItemClick
(
@NonNull
BaseQuickAdapter
adapter
,
@NonNull
View
view
,
int
position
)
{
public
void
onItemClick
(
@NonNull
BaseQuickAdapter
<?,
?>
adapter
,
@NonNull
View
view
,
int
position
)
{
Tips
.
show
(
"onItemClick "
+
position
);
}
});
...
...
app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/multi/BinderUseActivity.java
浏览文件 @
90f360e7
...
...
@@ -152,7 +152,7 @@ public class BinderUseActivity extends BaseActivity {
@Override
public
void
convert
(
@NotNull
BinderVBHolder
<
ItemImgTextViewBinding
>
holder
,
Video
data
)
{
holder
.
getViewBinding
().
tv
.
setText
(
data
.
getName
());
holder
.
getViewBinding
().
tv
.
setText
(
"(ViewBinding) "
+
data
.
getName
());
}
/**
...
...
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/multi/BinderAdapter.kt
已删除
100644 → 0
浏览文件 @
3573400b
package
com.chad.baserecyclerviewadapterhelper.adapter.multi
import
com.chad.library.adapter.base.BaseBinderAdapter
class
BinderAdapter
:
BaseBinderAdapter
()
{
}
\ No newline at end of file
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/FirstProvider.java
浏览文件 @
90f360e7
...
...
@@ -9,12 +9,14 @@ import androidx.core.view.ViewCompat;
import
com.chad.baserecyclerviewadapterhelper.R
;
import
com.chad.baserecyclerviewadapterhelper.adapter.node.tree.NodeTreeAdapter
;
import
com.chad.baserecyclerviewadapterhelper.entity.node.tree.FirstNode
;
import
com.chad.baserecyclerviewadapterhelper.entity.node.tree.SecondNode
;
import
com.chad.library.adapter.base.entity.node.BaseNode
;
import
com.chad.library.adapter.base.provider.BaseNodeProvider
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
FirstProvider
extends
BaseNodeProvider
{
...
...
@@ -77,6 +79,8 @@ public class FirstProvider extends BaseNodeProvider {
@Override
public
void
onClick
(
@NotNull
BaseViewHolder
helper
,
@NotNull
View
view
,
BaseNode
data
,
int
position
)
{
// 这里使用payload进行增量刷新(避免整个item刷新导致的闪烁,不自然)
getAdapter
().
expandOrCollapse
(
position
,
true
,
true
,
NodeTreeAdapter
.
EXPAND_COLLAPSE_PAYLOAD
);
// getAdapter().expandOrCollapse(position, true, true, NodeTreeAdapter.EXPAND_COLLAPSE_PAYLOAD);
getAdapter
().
nodeAddData
(
data
,
new
SecondNode
(
new
ArrayList
<>(),
"p:"
+
position
));
getAdapter
().
notifyDataSetChanged
();
}
}
app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/node/tree/provider/SecondProvider.java
浏览文件 @
90f360e7
...
...
@@ -36,11 +36,15 @@ public class SecondProvider extends BaseNodeProvider {
@Override
public
void
onClick
(
@NotNull
BaseViewHolder
helper
,
@NotNull
View
view
,
BaseNode
data
,
int
position
)
{
SecondNode
entity
=
(
SecondNode
)
data
;
if
(
entity
.
isExpanded
())
{
getAdapter
().
collapse
(
position
);
}
else
{
getAdapter
().
expandAndCollapseOther
(
position
);
}
// SecondNode entity = (SecondNode) data;
// if (entity.isExpanded()) {
// getAdapter().collapse(position);
// } else {
// getAdapter().expandAndCollapseOther(position);
// }
// BaseNode fNode = getAdapter().findParentNode(position);
// getAdapter().nodeRemoveData();
// getAdapter().notifyItemRemoved(position);
}
}
library/src/main/java/com/chad/library/adapter/base/BaseBinderAdapter.kt
浏览文件 @
90f360e7
...
...
@@ -13,6 +13,13 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
* 使用 Binder 来实现adapter,既可以实现单布局,也能实现多布局
* 数据实体类也不存继承问题
*
* 当有多种条目的时候,避免在convert()中做太多的业务逻辑,把逻辑放在对应的 BaseItemBinder 中。
* 适用于以下情况:
* 1、实体类不方便扩展,此Adapter的数据类型可以是任意类型,默认情况下不需要实现 getItemType
* 2、item 类型较多,在convert()中管理起来复杂
*
* ViewHolder 由 [BaseItemBinder] 实现,并且每个[BaseItemBinder]可以拥有自己类型的ViewHolder类型。
*
* 数据类型为Any
*/
open
class
BaseBinderAdapter
(
list
:
MutableList
<
Any
>?
=
null
)
:
BaseQuickAdapter
<
Any
,
BaseViewHolder
>(
0
,
list
)
{
...
...
@@ -79,9 +86,7 @@ open class BaseBinderAdapter(list: MutableList<Any>? = null) : BaseQuickAdapter<
}
override
fun
getDefItemViewType
(
position
:
Int
):
Int
{
val
type
=
mTypeMap
[
data
[
position
].
javaClass
]
checkNotNull
(
type
)
{
"getDefItemViewType: index: $position - type: ${data[position].javaClass} Not Find!"
}
return
type
return
findViewType
(
data
[
position
].
javaClass
)
}
override
fun
bindViewClickListener
(
viewHolder
:
BaseViewHolder
,
viewType
:
Int
)
{
...
...
@@ -105,6 +110,12 @@ open class BaseBinderAdapter(list: MutableList<Any>? = null) : BaseQuickAdapter<
return
getItemBinderOrNull
(
holder
.
itemViewType
)
?.
onFailedToRecycleView
(
holder
)
?:
false
}
protected
fun
findViewType
(
clazz
:
Class
<
*
>):
Int
{
val
type
=
mTypeMap
[
clazz
]
checkNotNull
(
type
)
{
"findViewType: ViewType: $clazz Not Find!"
}
return
type
}
protected
open
fun
bindClick
(
viewHolder
:
BaseViewHolder
)
{
if
(
getOnItemClickListener
()
==
null
)
{
//如果没有设置点击监听,则回调给 itemProvider
...
...
library/src/main/java/com/chad/library/adapter/base/BaseProviderMultiAdapter.kt
浏览文件 @
90f360e7
...
...
@@ -18,6 +18,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
* @param T data 数据类型
* @constructor
*/
@Deprecated
(
"please use Class BaseBinderAdapter"
)
abstract
class
BaseProviderMultiAdapter
<
T
>(
data
:
MutableList
<
T
>?
=
null
)
:
BaseQuickAdapter
<
T
,
BaseViewHolder
>(
0
,
data
)
{
...
...
library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.kt
浏览文件 @
90f360e7
...
...
@@ -32,6 +32,7 @@ import java.lang.reflect.InvocationTargetException
import
java.lang.reflect.Modifier
import
java.lang.reflect.ParameterizedType
import
java.util.*
import
kotlin.collections.ArrayList
/**
* 获取模块
...
...
@@ -1158,17 +1159,24 @@ abstract class BaseQuickAdapter<T, VH : BaseViewHolder>
* @param list Collection<T>?
*/
open
fun
setList
(
list
:
Collection
<
T
>?)
{
// 不是同一个引用才清空列表
if
(
list
!==
this
.
data
)
{
this
.
data
.
clear
()
if
(!
list
.
isNullOrEmpty
())
{
this
.
data
.
addAll
(
list
)
}
mLoadMoreModule
?.
reset
()
mLastPosition
=
-
1
notifyDataSetChanged
()
mLoadMoreModule
?.
checkDisableLoadMoreIfNotFullPage
()
}
else
{
if
(!
list
.
isNullOrEmpty
())
{
val
newList
=
ArrayList
(
list
)
this
.
data
.
clear
()
this
.
data
.
addAll
(
newList
)
}
else
{
this
.
data
.
clear
()
}
}
mLoadMoreModule
?.
reset
()
mLastPosition
=
-
1
notifyDataSetChanged
()
mLoadMoreModule
?.
checkDisableLoadMoreIfNotFullPage
()
}
/**
...
...
library/src/main/java/com/chad/library/adapter/base/listener/OnItemClickListener.java
浏览文件 @
90f360e7
...
...
@@ -22,5 +22,5 @@ public interface OnItemClickListener {
* will be a view provided by the adapter)
* @param position The position of the view in the adapter.
*/
void
onItemClick
(
@NonNull
BaseQuickAdapter
adapter
,
@NonNull
View
view
,
int
position
);
void
onItemClick
(
@NonNull
BaseQuickAdapter
<?,?>
adapter
,
@NonNull
View
view
,
int
position
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录