Как прикрепить и получить конкретный идентификатор элемента списка в BlackBerry?

Я пытаюсь создавать списки с помощью FieldManager (горизонтального и вертикального). В этом списке у меня есть несколько интерактивных элементов, например кнопок, поэтому я не использую ListField или ObjectListField.

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

Итак, дайте мне знать, как я могу привязать идентификатор к определенной строке, когда я использую FieldManager, а затем как я могу сгенерировать событие для этого идентификатора при нажатии кнопки?


person Pawan Gupta    schedule 09.05.2013    source источник
comment
посмотрим, что вы пробовали?   -  person Signare    schedule 09.05.2013


Ответы (1)


Когда вы создаете строку, вы, вероятно, создаете (подкласс) Manager для каждой строки.

По крайней мере, похоже, что вы создаете ButtonField в каждой строке.

Что вы можете сделать, так это прикрепить cookie к каждой строке или к каждой кнопке при ее создании. cookie - это просто дополнительная информация, прикрепляемая к объекту. Затем, когда эта строка или кнопка нажата, вы запрашиваете строку / кнопку для файла cookie и используете это для определения идентификатора строки.

Каждый BlackBerry Поле может иметь прикрепленный файл cookie. Поскольку файл cookie имеет тип Object, вы можете делать из него все, что захотите.

Например, при создании кнопок для ваших строк:

for (int i = 0; i < numRows; i++) {
    BitmapButtonField button = new BitmapButtonField(onImage, offImage, ButtonField.CONSUME_CLICK);
    // use the row index as the cookie
    button.setCookie(new Integer(i));
    button.setChangeListener(this);
    Manager row = new MyRowManager();
    row.add(button);
    add(row);
}

а затем при нажатии кнопки:

void fieldChanged(Field field, int context) {
    Object cookie = field.getCookie();
    if (cookie instanceof Integer) {
        Integer rowId = (Integer)cookie;
        System.out.println("Row Id = " + rowId);
    }
}

Примечание. Я использую BlackBerry Advanced UI BitmapButtonField, но метод cookie будет работать с любым классом Field или Manager. См. другой пример здесь.

person Nate    schedule 09.05.2013