Estoy trabajando en una vista autocompleta que funcionará con un sistema de valores clave, y estoy tratando de averiguar qué debo hacer para que funcione publishResults, ya que el parámetro de resultados que se pasa a publishResults aquí es correcto en el depurador, sin embargo, no tengo idea de a qué debe corresponder o cómo hacer que muestre los resultados, ¿alguien puede ayudar? la creación de este objeto se encuentra en otro archivo, y se ve así:¿Cómo uso el método publishResults() cuando extiendo filtros en Android?
autoCompleteBox.setAdapter(new AutoCmpAdapter(this, android.R.layout.simple_dropdown_item_1line));
y el resto del código es el siguiente:
public class AutoCmpAdapter extends ArrayAdapter<String> implements Filterable {
protected Filter filter;
protected ArrayList<String> items;
protected ArrayList<String> res;
String lWds[] = { "HOMER", "TOM" };
String sWds[] = { "SIMPSON", "JONES" };
public AutoCmpAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
filter = new PhysFilter();
res = new ArrayList<String>();
}
public Filter getFilter() {
return filter;
}
private class PhysFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults f = new FilterResults();
res.clear();
if (constraint != null) {
ArrayList<String> res = new ArrayList<String>();
for (int x = 0; x < sWds.length; x++) {
if (sWds[x].toUpperCase().startsWith(constraint.toString().toUpperCase())) {
res.add(lWds[x]);
}
}
f.values = res.toArray();
f.count = res.size();
}
return f;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
Log.println(Log.INFO, "Results", "FOUND");
notifyDataSetChanged();
} else {
Log.println(Log.INFO, "Results", "-");
notifyDataSetInvalidated();
}
}
}
}
+1 solución de Niza. –
¿de dónde viene lWds en publishResults? –
@artworkad シ del dedo índice derecho pensando que es el dedo índice izquierdo ?? Haha .. es del código OP – whyoz