我正在使用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的大小正确。我之前使用过这个客户端库并且它有效。现在它是一个更新版本。任何帮助都会很棒!
答案 0 :(得分:1)
如果您的listOfMyObjects
不是ArrayList<>
或其他Iterable
的实例,则get(0)
将返回null,因为列表未编入索引。因此,即使列表中有n个项目,它也没有特定的第n个项目,因为它们没有被订购。
像这样创建ArrayList
:
listOfMyObjects = new ArrayList<myObject>(tmp.getItems());
然后get(0)
应该有用。