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