Крайни точки в облака на Appengine: NPE за методите за получаване на моделни обекти

Използвам Cloud Endpoints за извличане на данни от appengine към android. Използвайки генерираната библиотека, извличам списък с обекти. Това изглежда работи добре и ако регистрирам обекта, виждам json. Въпреки това, ако използвам getX() на обекта, получавам NPE. Java GAE 1.8.7. Правейки това в AsycTask в дейност.

        Builder builder = new Builder(AndroidHttp.newCompatibleTransport(),
                new GsonFactory(), null);
        MyObjectOperations service = builder.build().myobject();
        MyObjectCollection tmp = null;

        GetMyObjects it = service.getMyObjects();
        tmp = it.execute();
        listOfMyObjects = tmp.getItems();

        MyObject test=listOfMyObjects.get(0);
        test.getMyField();     //NPE here - on every field

Какво може да причини това?? ListOfMyObjects е с правилния размер. Използвал съм тази клиентска библиотека преди и тя работи. Сега е актуализирана версия. Всяка помощ би била чудесна!


person Patrick    schedule 15.11.2013    source източник


Отговори (1)


Ако вашият listOfMyObjects не е екземпляр на ArrayList<> или някой друг Iterable, get(0) ще върне null, тъй като списъкът не е индексиран. Така че, дори ако списъкът има n елемента, той няма конкретен n-ти елемент, тъй като те не са подредени.

Създайте ArrayList като този:

listOfMyObjects = new ArrayList<myObject>(tmp.getItems());

Тогава get(0) трябва да работи.

person willlma    schedule 18.11.2013