Я пытаюсь для отображения списка данных с флажками, где пользователь может выбрать несколько элементов в одно время ... Я хочу, чтобы поле поиска в верхней части списка, который будет осуществлять поиск по списку ...
Как мне это сделать?
Я пытаюсь для отображения списка данных с флажками, где пользователь может выбрать несколько элементов в одно время ... Я хочу, чтобы поле поиска в верхней части списка, который будет осуществлять поиск по списку ...
Как мне это сделать?
Во-первых, создать вектор со всеми полями списка, так что вы будете иметь возможность добавлять и удалять их на экране в любое время. При создании экрана, добавьте их в список контроля.
Теперь, предположим, что у вас есть один из этих 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());
}
}