redes - Texto de edición de Android: elija el número de teléfono del contacto(con finalización automática)
informacion mediatica (2)
¿Has consultado el ejemplo de Autocompletar de Android en: http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
tal vez pueda modificar este ejemplo para agregar su lista de contactos.
¿Hay alguna manera de poner un elemento EditText
en el que podría elegir el número de teléfono del contacto de mi lista de contactos. Al igual que en la aplicación genérica de Android sms. (¡Completar automáticamente al escribir el número de teléfono o el nombre del contacto!).
La respuesta de Hakan es buena, pero está relacionada con el uso del Cursor. En general, puede escribir su propio adaptador, por ejemplo, extendiendo ArrayAdapter. En mi aplicación, el Adaptador tuvo que hacer un montón de "cosas extrañas" como buscar en db, luego volver a filtrar los Cursores, agregar otros resultados, cambiar otros ... Hice algo como esto:
public class MyAdapter extends ArrayAdapter {
private List<String> mObjects; //the "strange Strings"
private MyHelper dbHelper; // an helper to make query
private MyFilter mFilter; // my personal filter: this is very important!!
private final Object mLock=new Object();
//functions very similar to the ArrayAdapter implementation
@Override
public int getCount() {
return mObjects.size();
}
@Override
public Filter getFilter() {
if (mFilter==null) {
mFilter=new TeamFilter();
}
return mFilter;
}
@Override
public String getItem(int position) {
return mObjects.get(position);
}
@Override
public int getPosition(String item) {
return mObjects.indexOf(item);
}
//the trick is here!
private class MyFilter extends Filter {
//"constraint" is the string written by the user!
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results=new FilterResults();
//no constraint => nothing to return
if ((constraint==null)||(constraint.length()==0)) {
synchronized (mLock) {
ArrayList<String> list=new ArrayList<String>();
results.values=list;
results.count=list.size();
}
}
else {
String constr=constraint.toString();
mObjects= // do what you want to do to populate you suggestion - list
//( I call the db and change some values)
results.values=mObjects;
results.count=mObjects.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count>0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}
}
}