Мне нужно создать фильтр для ListActivity, каждый элемент является объектом.
Моя идея состоит в том, чтобы создать TextView и фильтровать список каждый раз, когда вы нажимаете клавишу.
Извините за мой английский, я из Аргентины и мой английский плохой.
Большое спасибо
private ContentResolver cr;
private TextView lblMensaje;
private int ordenBan = 1; // 1 = asc
private ArrayList<Contacto> contactos = new ArrayList<Contacto>();
private ArrayAdaptador adapter;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
listarContactos("ASC");
// registerForContextMenu(lblMensaje);
registerForContextMenu(getListView()); // Le asocio a la lista un menu
// contextual
}
public void listarContactos(String orden) {
cr = getContentResolver();
Cursor cur;
cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,
ContactsContract.Contacts.DISPLAY_NAME + " " + orden);
recorrerCursor("1", cur); // Listo los favoritos
cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,
ContactsContract.Contacts.DISPLAY_NAME + " " + orden);
recorrerCursor("0", cur); // Listo los contactos normales
this.setListAdapter(new ArrayAdapter<Contacto>(this,
R.layout.filalayout, R.id.nombre, contactos));
adapter = new ArrayAdaptador(this, R.id.nombre,
contactos);
setListAdapter(adapter);
}
public void recorrerCursor(String fav, Cursor cur) {
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String esFavorito = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.STARRED));
if (esFavorito.equals(fav)) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Contacto contacto = new Contacto();
contacto.setDisplayName(name);
if (fav.equals("1")) {
contacto.setFavorito(true);
} else {
contacto.setFavorito(false);
}
contacto.setId(id);
if (Integer
.parseInt(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
contacto.setPhone(this.getPhoneNumbers(id));
}
contacto.setEmail(this.getEmailAddresses(id));
contacto.setPhoto(this.getPhotoUri(id));
contactos.add(contacto);
}
}
}
}