From fb56ac9a4a9cafc4628289a0d6192359fb7945d8 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 4 Jan 2016 11:54:14 -0600 Subject: [PATCH] Add HiddenTopArrayAdapter --- .../todoroo/astrid/ui/ReminderControlSet.java | 26 +--------- .../java/org/tasks/ui/DeadlineControlSet.java | 46 +---------------- .../org/tasks/ui/HiddenTopArrayAdapter.java | 49 +++++++++++++++++++ 3 files changed, 53 insertions(+), 68 deletions(-) create mode 100644 src/main/java/org/tasks/ui/HiddenTopArrayAdapter.java diff --git a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java index c2e1bac8b..d2a44fba0 100644 --- a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java @@ -10,7 +10,6 @@ import android.graphics.Paint; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; -import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.LinearLayout; @@ -34,6 +33,7 @@ import org.tasks.location.PlacePicker; import org.tasks.preferences.PermissionRequestor; import org.tasks.preferences.Preferences; import org.tasks.time.DateTime; +import org.tasks.ui.HiddenTopArrayAdapter; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -197,30 +197,8 @@ public class ReminderControlSet extends TaskEditControlSetBase implements Adapte }); addSpinner = (Spinner) getView().findViewById(R.id.alarms_add_spinner); addSpinner.setOnItemSelectedListener(ReminderControlSet.this); - remindAdapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, spinnerOptions) { - @Override - public View getDropDownView(int position, View convertView, ViewGroup parent) { - View v; - - // If this is the initial dummy entry, make it hidden - if (position == 0) { - TextView tv = new TextView(getContext()); - tv.setHeight(0); - tv.setVisibility(View.GONE); - v = tv; - } - else { - // Pass convertView as null to prevent reuse of special case views - v = super.getDropDownView(position, null, parent); - } - - // Hide scroll bar because it appears sometimes unnecessarily, this does not prevent scrolling - parent.setVerticalScrollBarEnabled(false); - return v; - } - }; + remindAdapter = new HiddenTopArrayAdapter(activity, android.R.layout.simple_spinner_item, spinnerOptions); addSpinner.setAdapter(remindAdapter); - remindAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); modeDisplay = (TextView) getView().findViewById(R.id.reminder_alarm_display); mode = (Spinner) getView().findViewById(R.id.reminder_alarm); modeDisplay.setOnClickListener(new OnClickListener() { diff --git a/src/main/java/org/tasks/ui/DeadlineControlSet.java b/src/main/java/org/tasks/ui/DeadlineControlSet.java index 1d370f377..72ae9de78 100644 --- a/src/main/java/org/tasks/ui/DeadlineControlSet.java +++ b/src/main/java/org/tasks/ui/DeadlineControlSet.java @@ -171,7 +171,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase { } }); dueDateSpinner = (Spinner) view.findViewById(R.id.due_date); - dueDateAdapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, dueDateOptions) { + dueDateAdapter = new HiddenTopArrayAdapter(activity, android.R.layout.simple_spinner_item, dueDateOptions) { @Override public View getView(final int position, final View convertView, final ViewGroup parent) { int selectedItemPosition = position; @@ -195,31 +195,11 @@ public class DeadlineControlSet extends TaskEditControlSetBase { } return tv; } - - @Override - public View getDropDownView(final int position, final View convertView, final ViewGroup parent) { - View v; - - if (position == 0) { - TextView tv = new TextView(getContext()); - tv.setHeight(0); - tv.setVisibility(View.GONE); - v = tv; - } else { - TextView tv = (TextView) LayoutInflater.from(activity).inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); - tv.setText(dueDateOptions.get(position)); - tv.setTextColor(themeColor); - v = tv; - } - - parent.setVerticalScrollBarEnabled(false); - return v; - } }; dueDateSpinner.setAdapter(dueDateAdapter); dueTimeSpinner = (Spinner) view.findViewById(R.id.due_time); - dueTimeAdapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, dueTimeOptions) { + dueTimeAdapter = new HiddenTopArrayAdapter(activity, android.R.layout.simple_spinner_item, dueTimeOptions, dueTimeHint) { @Override public View getView(final int position, final View convertView, final ViewGroup parent) { int selectedItemPosition = position; @@ -243,28 +223,6 @@ public class DeadlineControlSet extends TaskEditControlSetBase { } return tv; } - - @Override - public View getDropDownView(final int position, final View convertView, final ViewGroup parent) { - View v; - - if (position == 0) { - TextView tv = new TextView(getContext()); - tv.setHeight(0); - tv.setVisibility(View.GONE); - v = tv; - } else { - ViewGroup vg = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.simple_spinner_dropdown_item, parent, false); - ((TextView) vg.findViewById(R.id.text1)).setText(dueTimeOptions.get(position)); - if (position < dueTimeHint.size()) { - ((TextView) vg.findViewById(R.id.text2)).setText(dueTimeHint.get(position)); - } - v = vg; - } - - parent.setVerticalScrollBarEnabled(false); - return v; - } }; dueTimeSpinner.setAdapter(dueTimeAdapter); diff --git a/src/main/java/org/tasks/ui/HiddenTopArrayAdapter.java b/src/main/java/org/tasks/ui/HiddenTopArrayAdapter.java new file mode 100644 index 000000000..42ecb2f53 --- /dev/null +++ b/src/main/java/org/tasks/ui/HiddenTopArrayAdapter.java @@ -0,0 +1,49 @@ +package org.tasks.ui; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import org.tasks.R; + +import java.util.ArrayList; +import java.util.List; + +public class HiddenTopArrayAdapter extends ArrayAdapter { + + private List hints; + + public HiddenTopArrayAdapter(Context context, int resources, List objects) { + this(context, resources, objects, new ArrayList()); + } + + public HiddenTopArrayAdapter(Context context, int resource, List objects, List hints) { + super(context, resource, objects); + this.hints = hints; + } + + @Override + public View getDropDownView(final int position, final View convertView, final ViewGroup parent) { + View v; + + if (position == 0) { + TextView tv = new TextView(getContext()); + tv.setHeight(0); + tv.setVisibility(View.GONE); + v = tv; + } else { + ViewGroup vg = (ViewGroup) LayoutInflater.from(getContext()).inflate(R.layout.simple_spinner_dropdown_item, parent, false); + ((TextView) vg.findViewById(R.id.text1)).setText(getItem(position)); + if (position < hints.size()) { + ((TextView) vg.findViewById(R.id.text2)).setText(hints.get(position)); + } + v = vg; + } + + parent.setVerticalScrollBarEnabled(false); + return v; + } +}