Merge "Fix a bug with bad view reuse."
diff --git a/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
index c5aca17..6d6c8f5 100644
--- a/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
+++ b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
@@ -47,6 +47,7 @@
     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 @@
         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 @@
     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);
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
index f1a2a83..13c07de 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
@@ -80,4 +80,8 @@
         mViewCache.add(view);
         return view;
     }
+
+    public void removeFromCache(final View view) {
+        mViewCache.remove(view);
+    }
 }
diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
index 7ec7e9c..ba1fce1 100644
--- a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
+++ b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
@@ -224,7 +224,7 @@
                 (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);