Είμαι προσπαθεί να εμφανιστεί μια λίστα των στοιχείων με πλαίσια ελέγχου, όπου ο χρήστης μπορεί να επιλέξει πολλά στοιχεία σε ένα χρόνο ... θέλω ένα πεδίο αναζήτησης στην κορυφή της λίστας που θα ψάξει στη λίστα ...
Πως το κάνω?
Είμαι προσπαθεί να εμφανιστεί μια λίστα των στοιχείων με πλαίσια ελέγχου, όπου ο χρήστης μπορεί να επιλέξει πολλά στοιχεία σε ένα χρόνο ... θέλω ένα πεδίο αναζήτησης στην κορυφή της λίστας που θα ψάξει στη λίστα ...
Πως το κάνω?
Πρώτον, τη δημιουργία ενός φορέα με όλα τα πεδία λίστας, έτσι θα είστε σε θέση να προσθέσετε και να αφαιρέσετε τους στην οθόνη ανά πάσα στιγμή. Όταν δημιουργείτε οθόνη, όλα αυτά προσθέσετε στη λίστα ελέγχου.
Τώρα, ας πούμε ότι έχετε ένα από αυτά τα EditFields - πεδίο αναζήτησης σας. Μπορείτε να ορίσετε έναν ακροατή γι 'αυτό και να πιάσει περίπτωση αλλαγής κειμένου.
Σε αυτή την περίπτωση μπορείτε να αφαιρέσετε όλα τα πεδία από τον έλεγχο κατάλογο, να λάβει την αξία κειμένου από πεδίο αναζήτησης, επαναλάβει όλα τα διανυσματικά πεδία και προσθέστε αυτές που πληρούν τα κριτήρια αναζήτησης στη λίστα ελέγχου.
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);
}
}
}
δείγματος Χρήση:
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());
}
}