BlackBerry - Lijst met checkbox samen met zoekcriteria

stemmen
2

Ik ben op zoek naar een lijst van data met vakjes, waar de gebruiker meerdere items in een keer kunt selecteren ... Ik wil een zoekveld op de top van de lijst, die zal zoeken in de lijst ...

Hoe doe ik het?

De vraag is gesteld op 22/07/2009 om 07:48
bron van user
In andere talen...                            


1 antwoorden

stemmen
4

Uitleg

Maak eerst een vector met alle lijst velden, zodat u in staat om toe te voegen en te verwijderen ze op het scherm op elk gewenst moment zal zijn. Wanneer u het scherm maakt, voeg ze allemaal naar de lijst controle.

Nu, laten we zeggen je hebt een van die EditFields - uw zoekveld. U kunt een luisteraar die voor haar en de vangst tekst verandering evenement.

Op dat geval kunt u alle velden uit de lijst controle te verwijderen, neem tekst waarde uit zoekveld, herhalen alle velden vector en voeg die welke voldoen aan criteria om weer te geven controle.

Code

LookupList control:

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

Gebruik monster:

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

  • U kunt elk gebied descendend klasse toe te voegen aan de lijst (Edit / Label / CustomCheckBos etc), maar het moet een string cookie met waarde te zoeken hebben.
  • U kunt logica veranderen om te zoeken op Veldlabel, tekst of aangepaste eigenschap.
antwoordde op 22/07/2009 om 08:02
bron van user

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