From f0fc904b789e83d6c8f01e02a19ad346d3ae65f4 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 3 Jun 2015 23:46:20 -0500 Subject: [PATCH] AutoCompleteTextView in LocationPickerDialog --- .../tasks/dialogs/LocationPickerDialog.java | 27 +++++++------------ .../location/PlaceAutocompleteAdapter.java | 20 ++++++++++++++ .../res/layout/location_picker_dialog.xml | 10 ++----- src/main/res/values/styles.xml | 6 ++++- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java b/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java index 8d21c6b99..7d727d2e4 100644 --- a/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java +++ b/src/googleplay/java/org/tasks/dialogs/LocationPickerDialog.java @@ -1,16 +1,19 @@ package org.tasks.dialogs; +import android.content.Context; import android.content.DialogInterface; import android.content.IntentSender; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; +import android.view.ContextThemeWrapper; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.AdapterView; +import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; @@ -55,25 +58,13 @@ public class LocationPickerDialog extends InjectingDialogFragment implements Goo public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { googleApi.connect(this); - View layout = inflater.inflate(R.layout.location_picker_dialog, null); - EditText addressEntry = (EditText) layout.findViewById(R.id.address_entry); - - addressEntry.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_SEARCH) { - CharSequence search = v.getText(); - mAdapter.getAutocomplete(search); - return true; - } - return false; - } - }); - + Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Tasks_Dialog); + LayoutInflater themedInflater = inflater.cloneInContext(contextThemeWrapper); + View layout = themedInflater.inflate(R.layout.location_picker_dialog, null); + AutoCompleteTextView addressEntry = (AutoCompleteTextView) layout.findViewById(R.id.address_entry); + addressEntry.setOnItemClickListener(mAutocompleteClickListener); mAdapter = new PlaceAutocompleteAdapter(googleApi, fragmentActivity, android.R.layout.simple_list_item_1); - ListView list = (ListView) layout.findViewById(R.id.list); - list.setAdapter(mAdapter); - list.setOnItemClickListener(mAutocompleteClickListener); + addressEntry.setAdapter(mAdapter); return layout; } diff --git a/src/googleplay/java/org/tasks/location/PlaceAutocompleteAdapter.java b/src/googleplay/java/org/tasks/location/PlaceAutocompleteAdapter.java index 26ace6725..4edffae09 100644 --- a/src/googleplay/java/org/tasks/location/PlaceAutocompleteAdapter.java +++ b/src/googleplay/java/org/tasks/location/PlaceAutocompleteAdapter.java @@ -2,6 +2,7 @@ package org.tasks.location; import android.content.Context; import android.widget.ArrayAdapter; +import android.widget.Filter; import android.widget.Toast; import com.google.android.gms.common.api.ResultCallback; @@ -43,6 +44,25 @@ public class PlaceAutocompleteAdapter googleApi.getAutocompletePredictions(constraint.toString(), onResults); } + @Override + public Filter getFilter() { + return new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + getAutocomplete(constraint); + FilterResults filterResults = new FilterResults(); + filterResults.values = mResultList; + filterResults.count = mResultList.size(); + return filterResults; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + + } + }; + } + private ResultCallback onResults = new ResultCallback() { @Override public void onResult(AutocompletePredictionBuffer autocompletePredictions) { diff --git a/src/googleplay/res/layout/location_picker_dialog.xml b/src/googleplay/res/layout/location_picker_dialog.xml index 70741601a..264014f51 100644 --- a/src/googleplay/res/layout/location_picker_dialog.xml +++ b/src/googleplay/res/layout/location_picker_dialog.xml @@ -9,15 +9,14 @@ android:paddingTop="@dimen/vertical_page_margin" android:paddingBottom="@dimen/vertical_page_margin"> - - - \ No newline at end of file diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml index b39947cbf..99028be5e 100644 --- a/src/main/res/values/styles.xml +++ b/src/main/res/values/styles.xml @@ -106,7 +106,11 @@ #3fff -