События BB AutoCompleteField не обрабатываются - PullRequest
0 голосов
/ 30 ноября 2011

Я добавил к MainScreen и класс реализует FieldChangeListener. Проблема в том, что он обрабатывает, когда я ввожу текст и нажимаю клавишу, но не когда я удаляю текст, а затем нажимаю клавишу. Вот как я это добавил:

/// search bar
    BasicFilteredList filterList = new BasicFilteredList();
    String[] terms = {"a","b","c","d","e","f","g","h"};
    filterList.addDataSet(1,terms,"search",BasicFilteredList.COMPARISON_IGNORE_CASE);
    autoCompleteField = new AutoCompleteField(filterList){
        public void onSelect(Object selection, int type) {
            if(type == SELECT_ENTER || type == SELECT_TRACKBALL_CLICK || type == SELECT_TRACKWHEEL_CLICK)
                setListView();
        }
   };
//----------------over-ridden method-----------------
public void fieldChanged(Field field, int context) {
    if(field == topBar.getField(0)){
    // do something
    }
    else if(field == topBar.getField(1)){
    // do something
    }
    else if(field == topBar.getField(2)){
    //do something      
    }
    else if(field == autoCompleteField){
        setListView();//debugger never reaches here!
    }
}

РЕДАКТИРОВАТЬ Окончательное решение было так просто, как показано ниже -

autoCompleteField = new AutoCompleteField(filterList){
        public void fieldChanged(Field field, int context) {
            setListView();
        }
   };

1 Ответ

1 голос
/ 02 декабря 2011

Насколько я понял ваш вопрос, вы хотели бы получить уведомление, когда поле станет пустым. Если это то, что вам нужно, вы можете обратить ваше внимание на AutoCompleteField.fieldChanged(Field field, int context). Это Executed whenever the text in the field changes. Таким образом, вы можете переопределить его и проверить, является ли текст пустой строкой, а затем запустить собственное действие.

Кстати, в этом случае я думаю, что вы не должны называть это:

autoCompleteField.setChangeListener(this);

потому что AutoCompleteField реализует FieldChangeListener и он уже прослушивает себя в AutoCompleteField.fieldChanged(Field field, int context).

...