diff options
author | Maurice Lam <yukl@google.com> | 2017-03-27 16:24:08 -0700 |
---|---|---|
committer | Maurice Lam <yukl@google.com> | 2017-03-28 22:28:26 +0000 |
commit | 7204767830ba57c641422aeb98a74be719a51e08 (patch) | |
tree | 3ec67e930bc097c7536c260cab81322cd5741419 /library/main/src | |
parent | 339cbc0f38d81adda4d2f9bf44a5514e2f027031 (diff) | |
download | setupwizard-7204767830ba57c641422aeb98a74be719a51e08.tar.gz |
Notify the correct position when removing the last item
Change ItemGroup#getChildPosition to return the position even for
empty childrem, so that when removing the last item in a nested
ItemGroup, the notification propagation will still be correct.
Test: ./gradlew connectedAndroidTest test
Bug: 36634677
Change-Id: I612e0c624dabee1bfaa6133fe976527e85523634
(cherry picked from commit 4dd5de226fefd5c2fdf040543157357f53ea932e)
Diffstat (limited to 'library/main/src')
-rw-r--r-- | library/main/src/com/android/setupwizardlib/items/ItemGroup.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/library/main/src/com/android/setupwizardlib/items/ItemGroup.java b/library/main/src/com/android/setupwizardlib/items/ItemGroup.java index d645350..ac643e9 100644 --- a/library/main/src/com/android/setupwizardlib/items/ItemGroup.java +++ b/library/main/src/com/android/setupwizardlib/items/ItemGroup.java @@ -193,7 +193,8 @@ public class ItemGroup extends AbstractItemHierarchy implements ItemInflater.Ite } /** - * @return The "Item Position" of the given child, or -1 if the child is empty or not found. + * @return The "Item Position" of the given child, or -1 if the child is not found. If the given + * child is empty, position of the next visible item is returned. */ private int getChildPosition(ItemHierarchy child) { // Check the identity of the child rather than using .equals(), because here we want @@ -204,7 +205,14 @@ public class ItemGroup extends AbstractItemHierarchy implements ItemInflater.Ite private int getChildPosition(int childIndex) { updateDataIfNeeded(); if (childIndex != -1) { - return mHierarchyStart.get(childIndex, -1); + int childPos = -1; + int childCount = mChildren.size(); + for (int i = childIndex; childPos < 0 && i < childCount; i++) { + // Find the position of the first visible child after childIndex. This is required + // when removing the last item from a nested ItemGroup. + childPos = mHierarchyStart.get(i, -1); + } + return childPos; } return -1; } |