您好我尝试使用解析从android中的2个不同表中检索数据但没有成功。我想从“Luoghi”表中检索照片表中所有“imageFile”的“titolo”。这是我的 databse这是我的代码
list = new ArrayList<>();
try {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Photos");
query.include("luogoPointer");
listaEventiParse = query.find();
for (ParseObject country : listaEventiParse) {
// Locate images in flag column
ParseFile image = (ParseFile) country.get("imageFile");
ParseObject luoghi= country.getParseObject("luogoPointer");
ListaEventiItem map = new ListaEventiItem();
map.setImmagine(image.getUrl());
map.setId(luoghi.getString("titolo"));
list.add(map);
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
我在luoghi.getString(“titolo”)上获得了java.lang.NullPointerException
。
我错过了什么?
答案 0 :(得分:0)
而不是仅包含指向要在.find()
调用之前检索的字段(或字段)的指针:
query.include("luogoPointer.titolo");
答案 1 :(得分:0)
您在查询中包含luogoPointer
,但此指针的照片表中的许多条目为空。当你得到照片结果时,你得到许多记录的空指针,并在这个空指针上调用getString()
,这就是你得到NullPointerException
的原因。
在查询中再添加一个条件,仅选择包含luogoPointer
的记录。
query.whereExists(&#34; luogoPointer&#34);
现在你的查询是这样的:
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Photos");
query.include("luogoPointer");
query.whereExists("luogoPointer");
listaEventiParse = query.find();