BlackBerry - Liste avec case à cocher ainsi que des critères de recherche

voix
2

Je suis en train d'afficher une liste de données avec cases à cocher, où l'utilisateur peut sélectionner plusieurs éléments en une seule fois ... Je veux un champ de recherche en haut de la liste qui recherche dans la liste ...

Comment fait-on ça?

Créé 22/07/2009 à 07:48
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
4

Explication

Tout d'abord, créer un vecteur avec tous les champs de la liste, de sorte que vous serez en mesure d'ajouter et de les supprimer à l'écran à tout moment. Lorsque vous créez écran, les ajouter à la liste de contrôle.

Maintenant, permet de dire que vous avez un de ces EditFields - votre champ de recherche. Vous pouvez définir un écouteur pour attraper et événement de changement de texte.

Sur cet événement, vous pouvez supprimer tous les champs de contrôle de liste, prendre valeur de texte du champ de recherche, itérer tous vecteur champs et ajouter ceux qui répondent à des critères de recherche pour la liste de contrôle.

Code

contrôle 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);
        }
    }
}

Exemple d'utilisation:

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

  • vous pouvez ajouter une classe descendend sur le terrain à la liste (Modifier / Label / CustomCheckBos etc), mais il devrait avoir un cookie de chaîne avec la valeur pour la recherche.
  • vous pouvez changer la logique de recherche par champs étiquette, texte ou propriété personnalisée.
Créé 22/07/2009 à 08:02
source utilisateur

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