diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java b/WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java new file mode 100644 index 000000000..8a7f2a132 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java @@ -0,0 +1,43 @@ +package org.wordpress.android.ui; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.Spinner; + +import org.wordpress.android.ui.media.MediaGridFragment.Filter; +import org.wordpress.android.util.AppLog; +import org.wordpress.android.util.AppLog.T; + +import java.lang.reflect.Field; + +public class CustomSpinner extends Spinner { + OnItemSelectedListener listener; + + public CustomSpinner(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void setSelection(int position) { + //only ignore if the old selection is custom date since we may want to click on it again + if (position == Filter.CUSTOM_DATE.ordinal()) + ignoreOldSelectionByReflection(); + super.setSelection(position); + } + + public void setOnItemSelectedEvenIfUnchangedListener( + OnItemSelectedListener listener) { + this.listener = listener; + } + + private void ignoreOldSelectionByReflection() { + try { + Class<?> c = this.getClass().getSuperclass().getSuperclass().getSuperclass(); + Field reqField = c.getDeclaredField("mOldSelectedPosition"); + reqField.setAccessible(true); + reqField.setInt(this, -1); + } catch (Exception e) { + AppLog.e(T.MEDIA, e); + } + } +} |