Ik ben op zoek naar een lijst van data met vakjes, waar de gebruiker meerdere items in een keer kunt selecteren ... Ik wil een zoekveld op de top van de lijst, die zal zoeken in de lijst ...
Hoe doe ik het?
Ik ben op zoek naar een lijst van data met vakjes, waar de gebruiker meerdere items in een keer kunt selecteren ... Ik wil een zoekveld op de top van de lijst, die zal zoeken in de lijst ...
Hoe doe ik het?
Maak eerst een vector met alle lijst velden, zodat u in staat om toe te voegen en te verwijderen ze op het scherm op elk gewenst moment zal zijn. Wanneer u het scherm maakt, voeg ze allemaal naar de lijst controle.
Nu, laten we zeggen je hebt een van die EditFields - uw zoekveld. U kunt een luisteraar die voor haar en de vangst tekst verandering evenement.
Op dat geval kunt u alle velden uit de lijst controle te verwijderen, neem tekst waarde uit zoekveld, herhalen alle velden vector en voeg die welke voldoen aan criteria om weer te geven controle.
LookupList control:
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);
}
}
}
Gebruik monster:
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());
}
}