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?
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?
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.
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());
}
}