fix when remove child node from group node,reuse cause problem

This commit is contained in:
pengfei.zhou
2021-10-08 18:36:49 +08:00
committed by osborn
parent 53452e1d53
commit 3250523fb4
3 changed files with 24 additions and 18 deletions

View File

@@ -108,15 +108,14 @@ public abstract class GroupNode<F extends ViewGroup> extends SuperNode<F> {
}
if (position >= 0) {
//Found swap idx,position
ViewNode<?> reused = mChildNodes.remove(position);
ViewNode<?> abandoned = mChildNodes.remove(idx);
ViewNode<?> reused = mChildNodes.get(position);
mChildNodes.set(idx, reused);
mChildNodes.set(position, abandoned);
mChildNodes.set(position, oldNode);
//View swap index
mView.removeView(reused.getNodeView());
mView.addView(reused.getNodeView(), Math.min(idx, mView.getChildCount()));
mView.removeView(abandoned.getNodeView());
mView.addView(abandoned.getNodeView(), position);
mView.removeView(oldNode.getNodeView());
mView.addView(oldNode.getNodeView(), position);
} else {
//Not found,insert
ViewNode<?> newNode = ViewNode.create(getDoricContext(), type);