Фильтр для Листактивности - PullRequest
2 голосов
/ 19 октября 2011

Мне нужно создать фильтр для 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);
            }
        }
    }
}

1 Ответ

0 голосов
/ 07 октября 2012

Это не совсем дубликат для этого (@Kurtis), потому что эта ссылка не показывает массив объектов. Я нашел эту ссылку очень полезной:

http://www.mokasocial.com/2010/07/arrayadapte-filtering-and-you/

Показывает, как реализовать пользовательский фильтр, который будет фильтровать массив объектов.

...