过滤Listactivity

时间:2011-10-19 04:53:18

标签: android listview object filter listactivity

我需要为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 :(得分:0)

对于那个(@Kurtis)来说并不是真的重复,因为该链接不显示对象数组。我发现此链接非常有用:

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

它显示了如何实现一个自定义过滤器,它将过滤掉一组对象。