2015-12-04 3 views
0

Привет, я пытаюсь получить данные из двух разных таблиц в android, используя синтаксический анализ, но без успеха. Я хочу получить «titolo» из таблицы «Luoghi» для всей моей «imageFile» в таблице Photos. Это мой databse и это мой кодКак получить данные в синтаксисе из двух разных таблиц android?

 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(); 
     } 

я получил java.lang.NullPointerException на luoghi.getString ("titolo"). что мне не хватает?

+0

вы можете достичь обещанием на облака стороне –

ответ

0

Вы включены luogoPointer в запросе, но много записей в вашей фотографии таблице этот указатель пуст. Когда вы получаете результат «Фотографии», вы получаете нулевой указатель для многих записей и вызываете getString() на этот нулевой указатель, поэтому вы получаете NullPointerException.

Включите еще одно условие в свой запрос, чтобы выбрать только ту запись, которая содержит luogoPointer.

query.whereExists("luogoPointer");

Теперь ваш запрос, как это:

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Photos"); 

     query.include("luogoPointer"); 
     query.whereExists("luogoPointer"); 

     listaEventiParse = query.find(); 
+0

спасибо столько, что это правильно –

+0

@ EricTondelli его мое удовольствие. Пожалуйста, проверьте ответ как правильный ответ, если он заполняет ваше требование. – ved

0

Вместо того, в том числе только указатель включает поле (или поля), вы хотите получить до .find() вызова:

query.include("luogoPointer.titolo");

+0

Привет спасибо за ответ, но это не работает я получил эту ошибку: поле titolo не могут быть включены, потому что это не указатель на другой объект –

+0

Да, извините, теперь я понял, что обозначение, которое я предложил, предназначено для вложения вызовов объектам, а не в поля. Это не цель, которую вы хотите достичь. – jmrodrigg

+0

Однако, я думаю, что ошибка, которую вы получаете, связана с тем, что вы не загрузили запись 'luogoPointer'. Вероятно, то, что у вас есть в '' luogi' ParseObject, - это только его objectId. Позвольте мне посмотреть, могу ли я вспомнить, чего вам не хватает. – jmrodrigg

Смежные вопросы