2016-07-19 4 views
0

Итак, я решил сыграть с API-интерфейсом yelp как вызов для себя ... Очевидно, что я немного больше, чем я могу пережевывать ... То, что я пытаюсь сделать, это перебрать ответ YelpAPI и проверить, существует ли он в но он проверяет только последнее значение в ответе, и он даже не соответствует этому ... Есть ли альтернатива? Я думаю, что проблема ограничивается тем, что она работает над новой нитью, каждый раз перезаписывая старую итерацию ... Может быть совершенно другой способ приблизиться к этому. Ниже приведен кодПочему выполняется итерация через цикл for с помощью findInbackGround()?

localityVenueLocations = new String[2 * response.body().businesses().size()][4]; 
ParseGeoPoint venuePoint; 
String venueName; 
for (int i = 0; i < response.body().businesses().size(); i++) { 
    venuePoint = new ParseGeoPoint(response.body().businesses().get(i).location().coordinate().latitude(), response.body().businesses().get(i).location().coordinate().longitude()); 
    venueName = response.body().businesses().get(i).name(); 
    venue = new ParseObject("HotSpots"); 
    //Log.i("AppInfo", venueName); 
    ParseQuery <ParseObject> qVenues = ParseQuery.getQuery("HotSpots"); 
    //int size = qVenues.whereEqualTo("venue", venueName).find().size(); 
    //Log.i("AppInfo", String.valueOf(size)); 
    qVenues.whereEqualTo("venue", venueName).findInBackground(new FindCallback <ParseObject>() {@ 
     Override 
     public void done(List <ParseObject> objects, ParseException e) { 
      if (e == null) { 
       if (objects.size() > 0) { 
        Log.i("AppInfo", "Match for " + venueName); 
        Log.i("AppInfo", "Success checking data"); 
        Log.i("AppInfo", String.valueOf(objects.size())); 
       } else { 
        Log.i("AppInfo", "No match for " + venueName); 
        Log.i("AppInfo", "Failed at query"); 
        Log.i("AppInfo", String.valueOf(objects.size())); 
       } 
      } else { 
       Log.i("AppInfo", "Failed at error"); 
       e.getCode(); 
      } 
     } 
    }); 
    Log.i("App Info, Business", venueName.toString()); 
    Log.i("App Info, Lat", venuePoint.toString()); 
} 
+0

'он проверяет только последнее значение в ответе, и он даже не соответствует этому', как вы это наблюдаете? – njzk2

+0

Я использую логические операторы, стоит отметить, что я использую операторы журнала, чтобы увидеть, в какой момент это происходит. Возможно, я тоже не проверю правильное место. –

+0

Одно из первых замечаний - это область 'имя_пользователя'. это, по-видимому, поле экземпляра и изменяется в цикле. Значение, которое вы регистрируете, вероятно, не совпадает с значением, когда вы вызывали 'whereEqualTo'. – njzk2

ответ

0

Я нашел довольно несвязанное решение, проблема заключалась в том, что чтение элементов из parsequery означало, что каждый элемент в этом классе должен был быть установлен для общедоступного чтения/записи, который не был установлен ранее.

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