diff options
| author | 2011-05-19 10:09:36 -0700 | |
|---|---|---|
| committer | 2011-05-19 10:10:51 -0700 | |
| commit | 63f46e7145fb2087515eb04015d84d956cbb00cd (patch) | |
| tree | cea36c8d0f6dcd9df374a186af8743c556f29d4b | |
| parent | 706804e2e4199a7cfcb7e491d7aca38885ff0f14 (diff) | |
expandGroup can now animate
Add a boolean to have expandGroup animate the same as
performItemClick does
Change-Id: I652c6fa8f9a7b527572337b11900d653b5285352
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/widget/ExpandableListView.java | 27 |
2 files changed, 26 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt index b88ef3a4626f..212e012be540 100644 --- a/api/current.txt +++ b/api/current.txt @@ -24010,6 +24010,7 @@ package android.widget { ctor public ExpandableListView(android.content.Context, android.util.AttributeSet, int); method public boolean collapseGroup(int); method public boolean expandGroup(int); + method public boolean expandGroup(int, boolean); method public android.widget.ExpandableListAdapter getExpandableListAdapter(); method public long getExpandableListPosition(int); method public int getFlatListPosition(long); diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java index f8623686d277..ead9b4f977a9 100644 --- a/core/java/android/widget/ExpandableListView.java +++ b/core/java/android/widget/ExpandableListView.java @@ -599,12 +599,35 @@ public class ExpandableListView extends ListView { * was already expanded, this will return false) */ public boolean expandGroup(int groupPos) { - boolean retValue = mConnector.expandGroup(groupPos); + return expandGroup(groupPos, false); + } + + /** + * Expand a group in the grouped list view + * + * @param groupPos the group to be expanded + * @param animate true if the expanding group should be animated in + * @return True if the group was expanded, false otherwise (if the group + * 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)); + boolean retValue = mConnector.expandGroup(pm); if (mOnGroupExpandListener != null) { mOnGroupExpandListener.onGroupExpand(groupPos); } - + + if (animate) { + final int groupFlatPos = pm.position.flatListPos; + + final int shiftedGroupPosition = groupFlatPos + getHeaderViewsCount(); + smoothScrollToPosition(shiftedGroupPosition + mAdapter.getChildrenCount(groupPos), + shiftedGroupPosition); + } + pm.recycle(); + return retValue; } |