Loading core/java/android/widget/ExpandableListConnector.java +19 −9 Original line number Diff line number Diff line Loading @@ -372,7 +372,8 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { @Override public boolean isEnabled(int flatListPos) { final ExpandableListPosition pos = getUnflattenedPos(flatListPos).position; final PositionMetadata metadata = getUnflattenedPos(flatListPos); final ExpandableListPosition pos = metadata.position; boolean retValue; if (pos.type == ExpandableListPosition.CHILD) { Loading @@ -382,7 +383,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { retValue = true; } pos.recycle(); metadata.recycle(); return retValue; } Loading Loading @@ -461,7 +462,8 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { @Override public int getItemViewType(int flatListPos) { final ExpandableListPosition pos = getUnflattenedPos(flatListPos).position; final PositionMetadata metadata = getUnflattenedPos(flatListPos); final ExpandableListPosition pos = metadata.position; int retValue; if (mExpandableListAdapter instanceof HeterogeneousExpandableList) { Loading @@ -481,7 +483,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { } } pos.recycle(); metadata.recycle(); return retValue; } Loading Loading @@ -590,8 +592,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { * @param groupPos position of the group to collapse */ boolean collapseGroup(int groupPos) { PositionMetadata pm = getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = getFlattenedPos(elGroupPos); elGroupPos.recycle(); if (pm == null) return false; boolean retValue = collapseGroup(pm); Loading Loading @@ -631,8 +635,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { * @param groupPos the group to be expanded */ boolean expandGroup(int groupPos) { PositionMetadata pm = getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = getFlattenedPos(elGroupPos); elGroupPos.recycle(); boolean retValue = expandGroup(pm); pm.recycle(); return retValue; Loading Loading @@ -971,7 +977,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { public int groupInsertIndex; private void resetState() { if (position != null) { position.recycle(); position = null; } groupMetadata = null; groupInsertIndex = 0; } Loading Loading @@ -1005,6 +1014,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { } public void recycle() { resetState(); synchronized (sPool) { if (sPool.size() < MAX_POOL_SIZE) { sPool.add(this); Loading core/java/android/widget/ExpandableListPosition.java +4 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,10 @@ class ExpandableListPosition { return elp; } /** * Do not call this unless you obtained this via ExpandableListPosition.obtain(). * PositionMetadata will handle recycling its own children. */ public void recycle() { synchronized (sPool) { if (sPool.size() < MAX_POOL_SIZE) { Loading core/java/android/widget/ExpandableListView.java +10 −7 Original line number Diff line number Diff line Loading @@ -326,7 +326,6 @@ public class ExpandableListView extends ListView { indicator.draw(canvas); } } pos.recycle(); } Loading Loading @@ -613,8 +612,10 @@ public class ExpandableListView extends ListView { * was already expanded, this will return false) */ public boolean expandGroup(int groupPos, boolean animate) { PositionMetadata pm = mConnector.getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = mConnector.getFlattenedPos(elGroupPos); elGroupPos.recycle(); boolean retValue = mConnector.expandGroup(pm); if (mOnGroupExpandListener != null) { Loading Loading @@ -776,8 +777,10 @@ public class ExpandableListView extends ListView { * @return The flat list position for the given child or group. */ public int getFlatListPosition(long packedPosition) { PositionMetadata pm = mConnector.getFlattenedPos(ExpandableListPosition .obtainPosition(packedPosition)); ExpandableListPosition elPackedPos = ExpandableListPosition .obtainPosition(packedPosition); PositionMetadata pm = mConnector.getFlattenedPos(elPackedPos); elPackedPos.recycle(); final int flatListPosition = pm.position.flatListPos; pm.recycle(); return getAbsoluteFlatPosition(flatListPosition); Loading Loading @@ -988,11 +991,11 @@ public class ExpandableListView extends ListView { final int adjustedPosition = getFlatPositionForConnector(flatListPosition); PositionMetadata pm = mConnector.getUnflattenedPos(adjustedPosition); ExpandableListPosition pos = pm.position; pm.recycle(); id = getChildOrGroupId(pos); long packedPosition = pos.getPackedPosition(); pos.recycle(); pm.recycle(); return new ExpandableListContextMenuInfo(view, packedPosition, id); } Loading Loading
core/java/android/widget/ExpandableListConnector.java +19 −9 Original line number Diff line number Diff line Loading @@ -372,7 +372,8 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { @Override public boolean isEnabled(int flatListPos) { final ExpandableListPosition pos = getUnflattenedPos(flatListPos).position; final PositionMetadata metadata = getUnflattenedPos(flatListPos); final ExpandableListPosition pos = metadata.position; boolean retValue; if (pos.type == ExpandableListPosition.CHILD) { Loading @@ -382,7 +383,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { retValue = true; } pos.recycle(); metadata.recycle(); return retValue; } Loading Loading @@ -461,7 +462,8 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { @Override public int getItemViewType(int flatListPos) { final ExpandableListPosition pos = getUnflattenedPos(flatListPos).position; final PositionMetadata metadata = getUnflattenedPos(flatListPos); final ExpandableListPosition pos = metadata.position; int retValue; if (mExpandableListAdapter instanceof HeterogeneousExpandableList) { Loading @@ -481,7 +483,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { } } pos.recycle(); metadata.recycle(); return retValue; } Loading Loading @@ -590,8 +592,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { * @param groupPos position of the group to collapse */ boolean collapseGroup(int groupPos) { PositionMetadata pm = getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = getFlattenedPos(elGroupPos); elGroupPos.recycle(); if (pm == null) return false; boolean retValue = collapseGroup(pm); Loading Loading @@ -631,8 +635,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { * @param groupPos the group to be expanded */ boolean expandGroup(int groupPos) { PositionMetadata pm = getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = getFlattenedPos(elGroupPos); elGroupPos.recycle(); boolean retValue = expandGroup(pm); pm.recycle(); return retValue; Loading Loading @@ -971,7 +977,10 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { public int groupInsertIndex; private void resetState() { if (position != null) { position.recycle(); position = null; } groupMetadata = null; groupInsertIndex = 0; } Loading Loading @@ -1005,6 +1014,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable { } public void recycle() { resetState(); synchronized (sPool) { if (sPool.size() < MAX_POOL_SIZE) { sPool.add(this); Loading
core/java/android/widget/ExpandableListPosition.java +4 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,10 @@ class ExpandableListPosition { return elp; } /** * Do not call this unless you obtained this via ExpandableListPosition.obtain(). * PositionMetadata will handle recycling its own children. */ public void recycle() { synchronized (sPool) { if (sPool.size() < MAX_POOL_SIZE) { Loading
core/java/android/widget/ExpandableListView.java +10 −7 Original line number Diff line number Diff line Loading @@ -326,7 +326,6 @@ public class ExpandableListView extends ListView { indicator.draw(canvas); } } pos.recycle(); } Loading Loading @@ -613,8 +612,10 @@ public class ExpandableListView extends ListView { * was already expanded, this will return false) */ public boolean expandGroup(int groupPos, boolean animate) { PositionMetadata pm = mConnector.getFlattenedPos(ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1)); ExpandableListPosition elGroupPos = ExpandableListPosition.obtain( ExpandableListPosition.GROUP, groupPos, -1, -1); PositionMetadata pm = mConnector.getFlattenedPos(elGroupPos); elGroupPos.recycle(); boolean retValue = mConnector.expandGroup(pm); if (mOnGroupExpandListener != null) { Loading Loading @@ -776,8 +777,10 @@ public class ExpandableListView extends ListView { * @return The flat list position for the given child or group. */ public int getFlatListPosition(long packedPosition) { PositionMetadata pm = mConnector.getFlattenedPos(ExpandableListPosition .obtainPosition(packedPosition)); ExpandableListPosition elPackedPos = ExpandableListPosition .obtainPosition(packedPosition); PositionMetadata pm = mConnector.getFlattenedPos(elPackedPos); elPackedPos.recycle(); final int flatListPosition = pm.position.flatListPos; pm.recycle(); return getAbsoluteFlatPosition(flatListPosition); Loading Loading @@ -988,11 +991,11 @@ public class ExpandableListView extends ListView { final int adjustedPosition = getFlatPositionForConnector(flatListPosition); PositionMetadata pm = mConnector.getUnflattenedPos(adjustedPosition); ExpandableListPosition pos = pm.position; pm.recycle(); id = getChildOrGroupId(pos); long packedPosition = pos.getPackedPosition(); pos.recycle(); pm.recycle(); return new ExpandableListContextMenuInfo(view, packedPosition, id); } Loading