Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 988a1f31 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Fix a bug with bad view reuse."

parents 4d4310df 6912342a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public class ButtonSwitcher extends FrameLayout {
    private Button mInstallButton;
    private Button mCancelButton;
    private Button mDeleteButton;
    private DictionaryListInterfaceState mInterfaceState;
    private OnClickListener mOnClickListener;

    public ButtonSwitcher(Context context, AttributeSet attrs) {
@@ -57,9 +58,10 @@ public class ButtonSwitcher extends FrameLayout {
        super(context, attrs, defStyle);
    }

    public void reset() {
    public void reset(final DictionaryListInterfaceState interfaceState) {
        mStatus = NOT_INITIALIZED;
        mAnimateToStatus = NOT_INITIALIZED;
        mInterfaceState = interfaceState;
    }

    @Override
@@ -153,6 +155,7 @@ public class ButtonSwitcher extends FrameLayout {
    private ViewPropertyAnimator animateButton(final View button, final int direction) {
        final float outerX = getWidth();
        final float innerX = button.getX() - button.getTranslationX();
        mInterfaceState.removeFromCache((View)getParent());
        if (ANIMATION_IN == direction) {
            button.setClickable(true);
            return button.animate().translationX(0);
+4 −0
Original line number Diff line number Diff line
@@ -80,4 +80,8 @@ public class DictionaryListInterfaceState {
        mViewCache.add(view);
        return view;
    }

    public void removeFromCache(final View view) {
        mViewCache.remove(view);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ public final class WordListPreference extends Preference {
                (ButtonSwitcher)view.findViewById(R.id.wordlist_button_switcher);
        // We need to clear the state of the button switcher, because we reuse views; if we didn't
        // reset it would animate from whatever its old state was.
        buttonSwitcher.reset();
        buttonSwitcher.reset(mInterfaceState);
        if (mInterfaceState.isOpen(mWordlistId)) {
            // The button is open.
            final int previousStatus = mInterfaceState.getStatus(mWordlistId);