BlackBerry - Lista con checkbox con criteri di ricerca

voti
2

Sto cercando di visualizzare un elenco di dati con caselle di controllo, dove l'utente può selezionare più elementi in una sola volta ... Voglio un campo di ricerca in cima alla lista che cercherà attraverso la lista ...

Come lo faccio?

È pubblicato 22/07/2009 alle 07:48
fonte dall'utente
In altre lingue...                            


1 risposte

voti
4

Spiegazione

In primo luogo, creare un vettore con tutti i campi della lista, in modo da essere in grado di aggiungere e rimuovere le loro sullo schermo in qualsiasi momento. Quando si crea schermo, aggiungerli tutti all'elenco di controllo.

Ora, supponiamo di avere una di quelle EditFields - il vostro campo di ricerca. È possibile impostare un listener per esso e prendere evento di modifica del testo.

In quel caso è possibile rimuovere tutti i campi dal controllo lista, prendere valore di testo da campo di ricerca, scorrere tutti i campi di vettore e aggiungere quelli che soddisfano i criteri di ricerca per elencare il controllo.

Codice

Controllo 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);
        }
    }
}

campione Uso:

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

  • è possibile aggiungere qualsiasi classe Field descendend per elencare (Modifica / Label / CustomCheckBos, ecc), ma si dovrebbe avere un cookie stringa con valore da cercare.
  • è possibile modificare la logica di ricerca per Campo etichetta, testo o proprietà personalizzata.
Risposto il 22/07/2009 a 08:02
fonte dall'utente

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