Am încercat să afișeze o listă de date cu casete de selectare, în cazul în care utilizatorul poate selecta mai multe elemente la un moment dat ... Vreau un câmp de căutare în partea de sus a listei, care va căuta prin lista ...
Cum trebuie să fac?
Am încercat să afișeze o listă de date cu casete de selectare, în cazul în care utilizatorul poate selecta mai multe elemente la un moment dat ... Vreau un câmp de căutare în partea de sus a listei, care va căuta prin lista ...
Cum trebuie să fac?
În primul rând, a crea un vector cu toate câmpurile listă, astfel încât veți putea să adăugați și eliminați-le pe ecran, în orice moment. Când creați ecran, adăugați-le pe toate la lista de control.
Acum, vă permite să spunem că aveți unul dintre aceste EditFields - câmpul de căutare. Puteți seta un ascultător pentru ea și de captură eveniment de modificare a textului.
Cu privire la acest eveniment puteți elimina toate câmpurile din lista de control, ia valoare de tip text din câmpul de căutare, iteram toate câmpurile vectoriale și se adaugă cele care îndeplinesc criteriile de căutare pentru a lista de control.
Controlul 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);
}
}
}
eșantion de utilizare:
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());
}
}