как настроить ObjectListField? - PullRequest
3 голосов
/ 26 августа 2010

Можно ли настроить Objectfieldlist в соответствии со следующим дизайном?

         ----------------------------
ROW#1    ROW NAME
         row details
         ---------------------------
ROW#2    ROW NAME
         row details
         ---------------------------  
ROW#3    ROW NAME
         row details
         ---------------------------

Имя строки будет иметь больший шрифт, чем детали строки

В основном мне нужно 2 строки текста в строке ObjectListField. ** ИЛИ любой другой метод или предложение, так как я могу ошибаться, ** пожалуйста, укажите мне его срочность, и я немного новичок в Blackberry Development.

1 Ответ

5 голосов
/ 29 августа 2010

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

Вы должны расширитьListField и предоставьте собственную реализацию ListFieldCallback, которая отображает ваш список на основе вашей модели данных.Используйте ListField.setCallback для установки обратного вызова.

ListFieldCallback.drawListRow дает вам контекст Graphics, так что вы можете рисовать все, что захотите, включая несколько строк текста.Также обязательно вызовите ListField.setRowHeight в вашем поле списка, чтобы сделать строки достаточно высокими для 2 строк текста (высота по умолчанию равна высоте шрифта, поэтому у вас будет место только для 1 строки текста).

Пример кода выглядит примерно так (он не завершен и не будет компилироваться без какого-либо другого кода):

ListField myListField = new ListField();
myListField.setRowHeight(getFont().getHeight() * 2)

myListField.setCallback(new ListFieldCallback() {
    public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) {
       // draw the first line of text
       graphics.drawText(0, y, "ROW " + rowNumber);
       graphics.drawText(20, y, "ROW NAME");
       graphics.drawText(20, y + getFont().getHeight(), "row details"); 
    }
...