aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/CustomSpinner.java
diff options
context:
space:
mode:
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.java43
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);
+ }
+ }
+}