Передать параметр из поля поиска в blackberry - PullRequest
2 голосов
/ 24 июня 2011

Я новичок в Blackberry Development, и мне нужно реализовать функцию поиска.Предполагается, что когда я ввожу что-то в поле поиска и нажимаю кнопку поиска, эта строка должна передаваться в URL в качестве параметра.Может ли кто-нибудь направить меня в правильном направлении, чтобы я мог понять, как это осуществить.

1 Ответ

2 голосов
/ 24 июня 2011

Если вы хотите, чтобы поиск выполнялся на удаленном сервере, и просто хотите, чтобы пользователь мог вводить поисковый запрос, то сначала вам понадобится менеджер с двумя полями, например BasicEditField и ButtonField . Затем вы захотите подключить поле кнопки для отправки запроса при нажатии (я полагаю из вашего описания, что это http, но это может быть что угодно). Если поле вашей кнопки хранится в переменной buttonField, а поле редактирования хранится в переменной editField, и у вас есть метод с именем sendRequest, который принимает параметр и отправляет запрос на URL, тогда вы можете есть:

buttonField.setChangeListener(new FieldChangeListener() {
    public void fieldChanged (Field field, int context) {
        (new Thread() {
            public void run() {
                sendRequest(editField.getText());
            }
        }).start();
    }
});

Это может показаться немного сложным, но разбить его довольно легко:

  • Вызывая setChangeListener, мы гарантируем, что метод fieldChanged будет вызываться при каждом нажатии кнопки
  • Когда вызывается fieldChanged, мы будем в потоке пользовательского интерфейса. Мы не хотим блокировать пользовательский интерфейс во время выполнения запроса, поэтому вы должны отправить запрос в новом потоке.
  • getText получает текущий введенный пользователем текст и передает его вашему sendRequest методу

Метод sendRequest должен отправить запрос по указанному вами URL. Это будет зависеть от того, сколько старых устройств вам нужно поддерживать - BlackBerry представила новый сетевой API в 5.0 и расширила его до 6.0, что значительно упрощает сетевые коммуникации.

Я предполагаю, что вы будете анализировать какой-то ответ, содержащий результаты поиска. В этом случае вам также понадобится менеджер (например, VerticalFieldManager ) для хранения этих результатов. Затем вы добавляете поле для каждого результата, который хотите показать. При этом вам нужно быть осторожным, чтобы удерживать блокировку события пользовательского интерфейса , поскольку это, вероятно, будет выполняться в фоновом потоке. Например, вы можете иметь:

public void addResult(String result) {
    synchronized(Application.getEventLock()) {
        searchResults.add(new LabelField(result));
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...