Jeg prøver å vise en liste over data med boksene, hvor brukeren kan velge flere elementer på en gang ... Jeg vil ha et søkefelt på toppen av listen som vil søke gjennom listen ...
Hvordan gjør jeg det?
Jeg prøver å vise en liste over data med boksene, hvor brukeren kan velge flere elementer på en gang ... Jeg vil ha et søkefelt på toppen av listen som vil søke gjennom listen ...
Hvordan gjør jeg det?
Først oppretter du en vektor med alle listefelt, så du vil være i stand til å legge til og fjerne dem på skjermen til enhver tid. Når du oppretter skjermen, legge dem til listen kontroll.
Nå kan si at du har en av disse EditFields - din søkefeltet. Du kan angi en lytter til det og fange tekst endringen.
På dette arrangementet kan du fjerne alle felt fra listen kontroll, ta tekstverdi fra søkefeltet, gjenta alle felt vektor og legge de som oppfyller søkekriteriene for å liste kontroll.
LookupList kontroll:
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);
}
}
}
Bruk prøven:
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());
}
}