BlackBerry - список с флажком наряду с критериями поиска

голоса
2

Я пытаюсь для отображения списка данных с флажками, где пользователь может выбрать несколько элементов в одно время ... Я хочу, чтобы поле поиска в верхней части списка, который будет осуществлять поиск по списку ...

Как мне это сделать?

Задан 22/07/2009 в 07:48
источник пользователем
На других языках...                            


1 ответов

голоса
4

объяснение

Во-первых, создать вектор со всеми полями списка, так что вы будете иметь возможность добавлять и удалять их на экране в любое время. При создании экрана, добавьте их в список контроля.

Теперь, предположим, что у вас есть один из этих 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());
    }
}

PS

  • Вы можете добавить любой класс Field descendend в список (Edit / Этикетка / CustomCheckBos и т.д.), но он должен иметь строковое печенье со значением для поиска.
  • Вы можете изменить логику для поиска по метке поля, текст или пользовательские свойства.
Ответил 22/07/2009 в 08:02
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more