Android AutoCompleteTextView sugiere alternativa

es posible tener un AutoCompleteTextView, que busca una cadena, pero sugiere una cadena alternativa?

Por ejemplo, si el usuario escribe 'Yau' o 'yauh', sugeriría 'Yáuh' para que el usuario no tenga que escribir caracteres especiales.

He tenido un ir en la ampliación de ArrayAdapter, pero deosn't parece ser sobrescribir:

import java.util.ArrayList; import java.util.List; import android.content.Context; import android.widget.ArrayAdapter; import android.widget.Filter; import android.widget.Filterable; public class foreignAdapter<T> extends ArrayAdapter implements Filterable { String temp; String word; private List<T> mObjects; private final Object mLock = new Object(); private ArrayList<T> mOriginalValues; public foreignAdapter(Context context, int resource, T[] object) { super(context, resource, object); } private class ArrayFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence prefix) { FilterResults results = new FilterResults(); if (mOriginalValues == null) { synchronized (mLock) { mOriginalValues = new ArrayList<T>(mObjects); } } if (prefix == null || prefix.length() == 0) { synchronized (mLock) { ArrayList<T> list = new ArrayList<T>(mOriginalValues); results.values = list; results.count = list.size(); } } else { String prefixString = prefix.toString().toLowerCase(); final ArrayList<T> values = mOriginalValues; final int count = values.size(); final ArrayList<T> newValues = new ArrayList<T>(count); for (int i = 0; i < count; i++) { final T value = values.get(i); final String valueText = value.toString().toLowerCase(); /* Run for each character in the string */ for(int j=0;j<valueText.length();j++) { switch(valueText.charAt(j)) { case 'á': case 'ā': case 'à': temp+='a'; break; case 'í': case 'ī': case 'ì': temp+='i'; break; case 'è': case 'ē': case 'é': temp+='e'; break; case 'ó': case 'ō': case 'ò': temp+='o'; break; case 'ú': case 'ū': case 'ù': temp+='u'; break; case 'ģ': temp+='g'; break; default: temp+=word.charAt(j); break; } } // First match against the whole, non-splitted value if (temp.startsWith(prefixString)) { newValues.add(value); } else { final String[] words = temp.split(" "); final int wordCount = words.length; for (int k = 0; k < wordCount; k++) { if (words[k].startsWith(prefixString)) { newValues.add(value); break; } } } } results.values = newValues; results.count = newValues.size(); } return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { //noinspection unchecked mObjects = (List<T>) results.values; if (results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } } } 

No he probado esto pero esto seguramente lo hará …

Usted no ha especificado si sus datos están en una matriz o un DB así que voy a asumir una matriz (o una lista).

getFilter() el getFilter() de su adaptador. (Marque esta pregunta para ver cómo)

Ahora, en ese ejemplo (en el enlace) el autor usa startsWith para filtrar los resultados. En su lugar, tendrás que usar tu propio método de comparación que considere también esos caracteres especiales. (como en, iguale á con a )

Hay el AutoCompleteTextView, así que supongo que eso es lo que necesitas:

 <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="MyAutoCompleteTextView" > </AutoCompleteTextView> 

Aquí está la información oficial: AutoCompleteTextView

Acabo de ver que incluso hay un tutorial, Tutorial de AutoCompleteTextView

  • SearchView quita la línea de enfoque azul y muestra el cursor en determinada posición
  • Barra de Acción Android SearchView as Autocomplete?
  • Cómo cambiar el tamaño del texto en lugares autocompletefragment en android?
  • Cómo configurar el cursor a la derecha (EditText)?
  • Seleccione el elemento de AutoCompleteTextView en uiautomator
  • AutocompleteTextview y CompletionHintView
  • Android: AutoCompleteTextView ocultar teclado virtual
  • Cambiar filtro AutoCompleteTextView de "startsWith" a "Contains"?
  • Eliminar AutoCompleteTextView lista desplegable divider
  • cómo combinar DISPLAY_NAME y NUMBER en un CursorAdapter personalizado?
  • Sugerencia de float de AutoCompleteTextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.