am 988a1f31
: Merge "Fix a bug with bad view reuse."
* commit '988a1f3132d2e13fcd108ef945f91d9f30d8e222': Fix a bug with bad view reuse.
This commit is contained in:
commit
8850a158f8
3 changed files with 9 additions and 2 deletions
|
@ -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);
|
||||
|
|
|
@ -80,4 +80,8 @@ public class DictionaryListInterfaceState {
|
|||
mViewCache.add(view);
|
||||
return view;
|
||||
}
|
||||
|
||||
public void removeFromCache(final View view) {
|
||||
mViewCache.remove(view);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue