From aab0b7b3f19c9937c734cdd1d86467b44aa09495 Mon Sep 17 00:00:00 2001 From: limuyang Date: Thu, 2 Jan 2020 18:05:41 +0800 Subject: [PATCH] add `nodeAddData()`; can't run --- .../activity/node/NodeTreeUseActivity.java | 12 ++++++- .../library/adapter/base/BaseNodeAdapter.kt | 36 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/node/NodeTreeUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/node/NodeTreeUseActivity.java index c7032e0c0..d6c357d9d 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/node/NodeTreeUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/activity/node/NodeTreeUseActivity.java @@ -11,13 +11,14 @@ import com.chad.baserecyclerviewadapterhelper.entity.node.tree.FirstNode; import com.chad.baserecyclerviewadapterhelper.entity.node.tree.SecondNode; import com.chad.baserecyclerviewadapterhelper.entity.node.tree.ThirdNode; +import com.chad.baserecyclerviewadapterhelper.utils.Tips; import com.chad.library.adapter.base.entity.node.BaseNode; import java.util.ArrayList; import java.util.List; public class NodeTreeUseActivity extends BaseActivity { - private RecyclerView mRecyclerView; + private RecyclerView mRecyclerView; private NodeTreeAdapter adapter = new NodeTreeAdapter(); @Override @@ -32,6 +33,15 @@ protected void onCreate(Bundle savedInstanceState) { mRecyclerView.setAdapter(adapter); adapter.setNewData(getEntity()); + + mRecyclerView.postDelayed(new Runnable() { + @Override + public void run() { + SecondNode seNode = new SecondNode(new ArrayList(), "this is Add Second Node"); + adapter.nodeAddData(adapter.getData().get(0), 1,seNode); + Tips.show("新增node"); + } + }, 3000); } private List getEntity() { diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt b/library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt index 7b70707ff..a846b83c9 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt +++ b/library/src/main/java/com/chad/library/adapter/base/BaseNodeAdapter.kt @@ -161,6 +161,42 @@ abstract class BaseNodeAdapter(data: MutableList? = null) super.setDiffNewData(diffResult, flatData(newData)) } + /*************************** Node 数据操作 ***************************/ + + /** + * 对指定的父node,添加子node + * @param parentNode BaseNode 父node + * @param data BaseNode 子node + */ + fun nodeAddData(parentNode: BaseNode, data: BaseNode) { + val parentIndex = this.data.indexOf(parentNode) + var childIndex = 0 + parentNode.childNode?.let { + it.add(data) + childIndex = it.size + + addData(parentIndex + childIndex, data) + } + } + + /** + * 对指定的父node,在指定位置添加添加子node + * @param parentNode BaseNode 父node + * @param position Int 此位置是相对于其childNodes数据的位置!并不是整个data + * @param data BaseNode 添加的数据 + */ + fun nodeAddData(parentNode: BaseNode, position: Int, data: BaseNode) { + val parentIndex = this.data.indexOf(parentNode) + var pos = 0 + parentNode.childNode?.let { + it.add(position, data) + pos = parentIndex + position + 1 + + addData(parentIndex + pos, data) + } + + } + /*************************** 重写数据设置方法 END ***************************/ /**