BlackBerry - Lista cu casetă de selectare, împreună cu criterii de căutare

voturi
2

Am încercat să afișeze o listă de date cu casete de selectare, în cazul în care utilizatorul poate selecta mai multe elemente la un moment dat ... Vreau un câmp de căutare în partea de sus a listei, care va căuta prin lista ...

Cum trebuie să fac?

Întrebat 22/07/2009 la 07:48
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
4

Explicaţie

În primul rând, a crea un vector cu toate câmpurile listă, astfel încât veți putea să adăugați și eliminați-le pe ecran, în orice moment. Când creați ecran, adăugați-le pe toate la lista de control.

Acum, vă permite să spunem că aveți unul dintre aceste EditFields - câmpul de căutare. Puteți seta un ascultător pentru ea și de captură eveniment de modificare a textului.

Cu privire la acest eveniment puteți elimina toate câmpurile din lista de control, ia valoare de tip text din câmpul de căutare, iteram toate câmpurile vectoriale și se adaugă cele care îndeplinesc criteriile de căutare pentru a lista de control.

Cod

Controlul LookupList:

public class LookupList extends VerticalFieldManager {

    Vector mItems = null;

    public LookupList() {
        super();
        mItems = new Vector();
    }

    public void addItem(Field itemField) {
        String cookie = (String) itemField.getCookie();
        if (null == cookie)
            throw new IllegalArgumentException(
                    "String cookie must be set to lookupList field");
        mItems.addElement(itemField);
        add(itemField);
    }

    public void removeItem(int index) {
        Field itemField = (Field) mItems.elementAt(index);
        mItems.removeElement(itemField);
        delete(itemField);
    }

    public void lookup(String searchValue) {
        deleteAll();
        for (int i = 0, count = mItems.size(); i < count; i++) {
            Field field = (Field) mItems.elementAt(i);
            String cookie = (String) field.getCookie();
            if (cookie.startsWith(searchValue))
                add(field);
        }
    }
}

eșantion de utilizare:

class Scr extends MainScreen implements FieldChangeListener {
    LookupList mList = null;
    BasicEditField mEdit = null;

    public Scr() {
        super();

        mEdit = new BasicEditField();
        add(mEdit);

        mEdit.setChangeListener(this);

        mList = new LookupList();
        for (int i = 0; i < 100; i++) {
            LabelField label = new LabelField("Lookup field #"
                    + String.valueOf(i));
            label.setCookie(String.valueOf(i));
            mList.addItem(label);
        }

        add(mList);
    }

    public void fieldChanged(Field field, int context) {
        if (field == mEdit)
            mList.lookup(mEdit.getText());
    }
}

PS

  • puteți adăuga orice clasă de câmp descendend în listă (Editare / Etichetă / CustomCheckBos, etc), dar ar trebui să aibă un cookie șir cu o valoare pentru a căuta.
  • puteți schimba logica pentru a căuta în funcție de câmpul Etichetă, text sau proprietate personalizată.
Publicat 22/07/2009 la 08:02
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more