Blackberry - List med boksen sammen med søkekriteriene

stemmer
2

Jeg prøver å vise en liste over data med boksene, hvor brukeren kan velge flere elementer på en gang ... Jeg vil ha et søkefelt på toppen av listen som vil søke gjennom listen ...

Hvordan gjør jeg det?

Publisert på 22/07/2009 klokken 06:48
kilden bruker
På andre språk...                            


1 svar

stemmer
4

Forklaring

Først oppretter du en vektor med alle listefelt, så du vil være i stand til å legge til og fjerne dem på skjermen til enhver tid. Når du oppretter skjermen, legge dem til listen kontroll.

Nå kan si at du har en av disse EditFields - din søkefeltet. Du kan angi en lytter til det og fange tekst endringen.

På dette arrangementet kan du fjerne alle felt fra listen kontroll, ta tekstverdi fra søkefeltet, gjenta alle felt vektor og legge de som oppfyller søkekriteriene for å liste kontroll.

Kode

LookupList kontroll:

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

Bruk prøven:

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

  • du kan legge Feltet descendend klasse å liste (Edit / Etikett / CustomCheckBos etc), men det bør ha en streng informasjonskapsel med verdi å søke.
  • du kan endre logikken for å søke etter Feltet etikett, tekst eller tilpasset eiendom.
Svarte 22/07/2009 kl. 07:02
kilden bruker

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