Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_40328769
BaseRecyclerViewAdapterHelper
提交
453767de
B
BaseRecyclerViewAdapterHelper
项目概览
qq_40328769
/
BaseRecyclerViewAdapterHelper
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
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,发现更多精彩内容 >>
提交
453767de
编写于
1月 03, 2020
作者:
limuyang2
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix node data settings bug
上级
ef16c3a7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
80 addition
and
13 deletion
+80
-13
library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt
...ain/java/com/chad/library/adapter/base/BaseNodeAdapter.kt
+80
-13
未找到文件。
library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt
浏览文件 @
453767de
...
...
@@ -134,6 +134,10 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
notifyItemRangeChanged
(
index
+
getHeaderLayoutCount
(),
max
(
removeCount
,
newFlatData
.
size
))
}
/**
* 替换整个列表数据,如果需要对某节点下的子节点进行替换,请使用[nodeReplaceChildData]!
* @param newData Collection<BaseNode>
*/
override
fun
replaceData
(
newData
:
Collection
<
BaseNode
>)
{
// 不是同一个引用才清空列表
if
(
newData
!=
this
.
data
)
{
...
...
@@ -196,6 +200,31 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
return
removeCount
}
private
fun
removeChildAt
(
position
:
Int
):
Int
{
if
(
position
>=
data
.
size
)
{
return
0
}
// 记录被移除的item数量
var
removeCount
=
0
val
node
=
this
.
data
[
position
]
// 先移除子项
if
(!
node
.
childNode
.
isNullOrEmpty
())
{
if
(
node
is
BaseExpandNode
)
{
if
(
node
.
isExpanded
)
{
val
items
=
flatData
(
node
.
childNode
!!
)
this
.
data
.
removeAll
(
items
)
removeCount
=
items
.
size
}
}
else
{
val
items
=
flatData
(
node
.
childNode
!!
)
this
.
data
.
removeAll
(
items
)
removeCount
=
items
.
size
}
}
return
removeCount
}
/*************************** 重写数据设置方法 END ***************************/
...
...
@@ -221,7 +250,7 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
}
/**
* 对指定的父node,在指定位置添加
添加
子node
* 对指定的父node,在指定位置添加子node
* @param parentNode BaseNode 父node
* @param childIndex Int 此位置是相对于其childNodes数据的位置!并不是整个data
* @param data BaseNode 添加的数据
...
...
@@ -236,10 +265,16 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
val
parentIndex
=
this
.
data
.
indexOf
(
parentNode
)
val
pos
=
parentIndex
+
1
+
childIndex
addData
(
p
arentIndex
+
p
os
,
data
)
addData
(
pos
,
data
)
}
}
/**
* 对指定的父node,在指定位置添加子node集合
* @param parentNode BaseNode 父node
* @param childIndex Int 此位置是相对于其childNodes数据的位置!并不是整个data
* @param newData 添加的数据集合
*/
fun
nodeAddData
(
parentNode
:
BaseNode
,
childIndex
:
Int
,
newData
:
Collection
<
BaseNode
>)
{
parentNode
.
childNode
?.
let
{
it
.
addAll
(
childIndex
,
newData
)
...
...
@@ -249,7 +284,7 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
}
val
parentIndex
=
this
.
data
.
indexOf
(
parentNode
)
val
pos
=
parentIndex
+
1
+
childIndex
addData
(
p
arentIndex
+
p
os
,
newData
)
addData
(
pos
,
newData
)
}
}
...
...
@@ -264,15 +299,16 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
return
}
it
.
removeAt
(
childIndex
)
if
(
parentNode
is
BaseExpandNode
&&
!
parentNode
.
isExpanded
)
{
it
.
removeAt
(
childIndex
)
return
}
val
parentIndex
=
this
.
data
.
indexOf
(
parentNode
)
val
pos
=
parentIndex
+
1
+
childIndex
remove
(
parentIndex
+
pos
)
remove
(
pos
)
it
.
removeAt
(
childIndex
)
}
}
...
...
@@ -283,16 +319,13 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
*/
fun
nodeRemoveData
(
parentNode
:
BaseNode
,
childNode
:
BaseNode
)
{
parentNode
.
childNode
?.
let
{
val
isOk
=
it
.
remove
(
childNode
)
if
(!
isOk
)
{
return
}
if
(
parentNode
is
BaseExpandNode
&&
!
parentNode
.
isExpanded
)
{
it
.
remove
(
childNode
)
return
}
remove
(
childNode
)
it
.
remove
(
childNode
)
}
}
...
...
@@ -307,11 +340,45 @@ abstract class BaseNodeAdapter(data: MutableList<BaseNode>? = null)
if
(
childIndex
>=
it
.
size
)
{
return
}
it
[
childIndex
]
=
data
if
(
parentNode
is
BaseExpandNode
&&
!
parentNode
.
isExpanded
)
{
it
[
childIndex
]
=
data
return
}
val
parentIndex
=
this
.
data
.
indexOf
(
parentNode
)
val
pos
=
parentIndex
+
1
+
childIndex
setData
(
pos
,
data
)
it
[
childIndex
]
=
data
}
}
/**
* 替换父节点下的子节点集合
* @param parentNode BaseNode
* @param newData Collection<BaseNode>
*/
fun
nodeReplaceChildData
(
parentNode
:
BaseNode
,
newData
:
Collection
<
BaseNode
>)
{
parentNode
.
childNode
?.
let
{
if
(
parentNode
is
BaseExpandNode
&&
!
parentNode
.
isExpanded
)
{
it
.
clear
()
it
.
addAll
(
newData
)
return
}
val
parentIndex
=
this
.
data
.
indexOf
(
parentNode
)
val
removeCount
=
removeChildAt
(
parentIndex
)
notifyItemRangeRemoved
(
parentIndex
+
1
+
getHeaderLayoutCount
(),
removeCount
)
it
.
clear
()
it
.
addAll
(
newData
)
val
newFlatData
=
flatData
(
newData
)
this
.
data
.
addAll
(
parentIndex
+
1
,
newFlatData
)
notifyItemRangeInserted
(
parentIndex
+
1
+
getHeaderLayoutCount
(),
newFlatData
.
size
)
// notifyItemRangeChanged(parentIndex + 1 + getHeaderLayoutCount(), max(removeCount, newFlatData.size))
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录