【问题标题】:Filter for a Listactivity筛选列表活动
【发布时间】:2012-10-07 12:31:39
【问题描述】:

我需要为 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);
            }
        }
    }
}

【问题讨论】:

标签: android listview object filter listactivity


【解决方案1】:

对于那个(@Kurtis)来说,它并不是真正的重复,因为该链接没有显示对象数组。我发现这个链接很有帮助:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多