BlackBerry ObjectListField - PullRequest
       12

BlackBerry ObjectListField

0 голосов
/ 24 ноября 2010

Я занимаюсь разработкой проекта BlackBerry под JDE 4.6.1.Проблема заключается в том, что при добавлении элемента в список из метода measureListRow

вызывается стек вызовов NPE:

CustomerListField(ObjectListField).measureListRow(ListField, int, int)
CustomerListField(ListField).layout(int, int)
CustomerListField(ObjectListField).layout(int, int) 
VList(Manager).layoutChild(Field, int, int) 

Примечания.getDataAccess () - база данных

getListCount - получение количества элементов в списке CustomerListItem - структура элемента списка

и соответствующий код:

public class CustomerListField extends ObjectListField implements   ListFieldCallback, ChangeListener {

    private PagedDataFetcher dataFetcher = new CustomerListPagedDataFetcher();

    …

    public CustomerListField() {
        try {
            super.set(new Object[db_.getDataAccess().getListCount()]);
        } catch (Throwable e) {
        }
    }

    public void drawListRow(ListField listField, Graphics g, int index, int y,
                            int width) {
        CustomerListItem currentRow = (CustomerListItem) get(listField, index);
        …
    }

    public Object get(ListField list, int index) {
        try {
           return dataFetcher.getRowAtIndex(index);
        } catch (Throwable e) {
           return null;
        }
    }

// To obtain the data
public class CustomerListPagedDataFetcher extends PagedDataFetcher {
    protected Vector get(int from, int to) throws Exception {
        return DataAccess.getDataAccess().getLists(from, to);
    }
}


/**
 * layout for list
 */
final class VList extends VerticalFieldManager {
    private final ObjectListField list;
    int maxHeight = Display.getHeight() - getFont().getHeight() * 2 - 5; 

    VList(ObjectListField list) {
        super(Manager.VERTICAL_SCROLLBAR | Manager.VERTICAL_SCROLL);
        this.list = list;
    }

    public int getPreferredHeight() {
        return 45 * list.getSize();
    }

    protected void sublayout(int width, int height) {
        super.sublayout(width, height);
        setExtent(width, maxHeight);
    }
}

1 Ответ

0 голосов
/ 25 ноября 2010

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

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