diff --git a/library/build.gradle b/library/build.gradle index 59ee737..6d43350 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:0.8.+' + classpath 'com.android.tools.build:gradle:1.1.0' } } @@ -11,5 +11,5 @@ apply plugin: 'android-library' android { compileSdkVersion 19 - buildToolsVersion = '19.0.1' + buildToolsVersion = '19.1.0' } \ No newline at end of file diff --git a/library/src/main/java/com/tjerkw/slideexpandable/library/AbstractSlideExpandableListAdapter.java b/library/src/main/java/com/tjerkw/slideexpandable/library/AbstractSlideExpandableListAdapter.java index f03c03a..9c76656 100644 --- a/library/src/main/java/com/tjerkw/slideexpandable/library/AbstractSlideExpandableListAdapter.java +++ b/library/src/main/java/com/tjerkw/slideexpandable/library/AbstractSlideExpandableListAdapter.java @@ -61,6 +61,8 @@ public abstract class AbstractSlideExpandableListAdapter extends WrapperListAdap */ private ViewGroup parent; + private boolean accordionMode; + public AbstractSlideExpandableListAdapter(ListAdapter wrapped) { super(wrapped); } @@ -199,6 +201,14 @@ public boolean isAnyItemExpanded() { return (lastOpenPosition != -1) ? true : false; } + public void setAccordionMode(final boolean accordionMode) { + this.accordionMode = accordionMode; + } + + public boolean isAccordionMode() { + return accordionMode; + } + public void enableFor(View parent, int position) { View more = getExpandToggleButton(parent); View itemToolbar = getExpandableView(parent); @@ -206,6 +216,10 @@ public void enableFor(View parent, int position) { enableFor(more, itemToolbar, position); itemToolbar.requestLayout(); + + if(accordionMode && position == 0) { + more.performClick(); + } } @@ -254,39 +268,47 @@ public void onAnimationRepeat(Animation animation) { target.setAnimation(null); - int type = target.getVisibility() == View.VISIBLE - ? ExpandCollapseAnimation.COLLAPSE - : ExpandCollapseAnimation.EXPAND; - - // remember the state - if (type == ExpandCollapseAnimation.EXPAND) { - openItems.set(position, true); - } else { - openItems.set(position, false); - } - // check if we need to collapse a different view - if (type == ExpandCollapseAnimation.EXPAND) { - if (lastOpenPosition != -1 && lastOpenPosition != position) { - if (lastOpen != null) { - animateView(lastOpen, ExpandCollapseAnimation.COLLAPSE); - notifiyExpandCollapseListener( - ExpandCollapseAnimation.COLLAPSE, - lastOpen, lastOpenPosition); - } - openItems.set(lastOpenPosition, false); - } - lastOpen = target; - lastOpenPosition = position; - } else if (lastOpenPosition == position) { - lastOpenPosition = -1; + if((accordionMode && target.getVisibility() != View.VISIBLE) || !accordionMode) { + toggleView( + target.getVisibility() == View.VISIBLE + ? ExpandCollapseAnimation.COLLAPSE + : ExpandCollapseAnimation.EXPAND, + position, + target + ); } - animateView(target, type); - notifiyExpandCollapseListener(type, target, position); } } }); } + private void toggleView(int type, int position, View target) { + // remember the state + if (type == ExpandCollapseAnimation.EXPAND) { + openItems.set(position, true); + } else { + openItems.set(position, false); + } + // check if we need to collapse a different view + if (type == ExpandCollapseAnimation.EXPAND) { + if (lastOpenPosition != -1 && lastOpenPosition != position) { + if (lastOpen != null) { + animateView(lastOpen, ExpandCollapseAnimation.COLLAPSE); + notifiyExpandCollapseListener( + ExpandCollapseAnimation.COLLAPSE, + lastOpen, lastOpenPosition); + } + openItems.set(lastOpenPosition, false); + } + lastOpen = target; + lastOpenPosition = position; + } else if (lastOpenPosition == position) { + lastOpenPosition = -1; + } + animateView(target, type); + notifiyExpandCollapseListener(type, target, position); + } + private void updateExpandable(View target, int position) { final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)target.getLayoutParams();