title: android expandableListView animate slide up?
body: <p>I want to animate slide down and slide up on expandablelistview when I click the groupItem.Then I have finish the slide down.</p>
  
  <pre><code>public class ExpandAnimation extends Animation {
  private static final String TAG = "ExpandAnimation";
  private View mAnimatedView;
  private LayoutParams mViewLayoutParams;
  private int mMarginStart, mMarginEnd;
  private boolean mIsVisibleAfter = false;
  private boolean mWasEndedAlready = false;
  
  /**
   * Initialize the animation
   * @param view The layout we want to animate
   * @param duration The duration of the animation, in ms
   */
  public ExpandAnimation(View view, int duration) {
  
      setDuration(duration);
      mAnimatedView = view;
      mViewLayoutParams = (LayoutParams) view.getLayoutParams();
      // if the bottom margin is 0,
      // then after the animation will end it'll be negative, and invisible.
      mIsVisibleAfter = (mViewLayoutParams.bottomMargin == 0);
  
      mMarginStart = mViewLayoutParams.bottomMargin;
      Log.i(TAG, "mMarginStart:&gt;&gt;&gt;&gt;&gt;&gt;&gt;"+mMarginStart);
      mMarginEnd = (mMarginStart == 0 ? (0- view.getHeight()) : 0);
      Log.i(TAG, "mMarginEnd:&gt;&gt;&gt;&gt;&gt;&gt;&gt;"+mMarginEnd);
  
      view.setVisibility(View.VISIBLE);
  }
  
  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
      super.applyTransformation(interpolatedTime, t);
      Log.i(TAG, "applyTransformation--&gt;"+interpolatedTime);
      if (interpolatedTime &lt; 1.0f) {
  
          // Calculating the new bottom margin, and setting it
          mViewLayoutParams.bottomMargin = mMarginStart
                  + (int) ((mMarginEnd - mMarginStart) * interpolatedTime);
  
          // Invalidating the layout, making us seeing the changes we made
          mAnimatedView.requestLayout();
  
      // Making sure we didn't run the ending before (it happens!)
      } else if (!mWasEndedAlready) {
          mViewLayoutParams.bottomMargin = mMarginEnd;
          mAnimatedView.requestLayout();
  
          if (mIsVisibleAfter) {
              mAnimatedView.setVisibility(View.GONE);
  
          }
          mWasEndedAlready = true;
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>public View getChildView(int groupPosition, int childPosition,
          boolean isLastChild, View convertView, ViewGroup parent) {
      Log.i(TAG, "getChildView");
      @SuppressWarnings("unchecked")
      String text = ((Map&lt;String, String&gt;) getChild(groupPosition,
              childPosition)).get("child");
      if (convertView == null) {
          LayoutInflater layoutInflater = (LayoutInflater) context
                  .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  
          convertView = layoutInflater.inflate(R.layout.child, null);
  
      }
      View toolbar = convertView.findViewById(R.id.toolbar);
      setAnimationView(toolbar);
      ((LinearLayout.LayoutParams) toolbar.getLayoutParams()).bottomMargin = -75;
      toolbar.setVisibility(View.GONE);
      ExpandAnimation expandAni = new ExpandAnimation(toolbar, 1000);
      toolbar.startAnimation(expandAni);
      TextView tv = (TextView) convertView.findViewById(R.id.childTo);
      tv.setText(text);
  
      return convertView;
  }
  </code></pre>
  
  <p>But when I click the groupItem to collapse the group,it doesn't call the getChildView() method.So how can I to call the getChildView() and let it slide up? </p>