private ExpandableView.OnHeightChangedListener mOnHeightChangedListener;
private boolean mChildHierarchyDirty;
private boolean mIsExpanded = true;
- private boolean mChildrenNeedUpdate;
- private ViewTreeObserver.OnPreDrawListener mPreDrawListener
+ private boolean mChildrenUpdateRequested;
+ private ViewTreeObserver.OnPreDrawListener mChildrenUpdater
= new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
- if (mChildrenNeedUpdate) {
- updateChildren();
- mChildrenNeedUpdate = false;
- }
+ updateChildren();
+ mChildrenUpdateRequested = false;
+ getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
};
mPaddingBetweenElements = context.getResources()
.getDimensionPixelSize(R.dimen.notification_padding);
mStackScrollAlgorithm = new StackScrollAlgorithm(context);
- getViewTreeObserver().addOnPreDrawListener(mPreDrawListener);
}
@Override
}
private void requestChildrenUpdate() {
- mChildrenNeedUpdate = true;
- invalidate();
+ if (!mChildrenUpdateRequested) {
+ getViewTreeObserver().addOnPreDrawListener(mChildrenUpdater);
+ mChildrenUpdateRequested = true;
+ invalidate();
+ }
}
private boolean isCurrentlyAnimating() {