2016-09-05 4 views
0

Я пытаюсь использовать Retrofit 2.1.0 Обновление с 1.9.0 В ответ я не могу запустить маркеры, которые я хочу нанести на карту. On Retrofit 1.9.0 работает отлично, но хочет использовать обновленную систему.Застрял со списком и retrofit2 и foreach

Retrofit adapter = new Retrofit.Builder() 
       .baseUrl(AppConfig.URL_PINS) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

MapPinsApiInterface pinsApiInterface = adapter.create(MapPinsApiInterface.class); 
Call<List<MapPins>> pins = (Call<List<MapPins>>) pinsApiInterface.getStreams(); 
pins.enqueue(new Callback<List<MapPins>>() { 
    @Override 
    public void onResponse(Call<List<MapPins>> pins, Response<List<MapPins>> response) { 
     if (!isAdded() || pins == null) 
      return; 

     int numMarkersInRainbow[] = { 
      R.mipmap.homecenter, 
      R.mipmap.shop, 
      R.mipmap.marksilv, 
      R.mipmap.markgold, 
      R.mipmap.markgreen, 
      R.mipmap.markoran, 
      R.mipmap.itsyou, 
      R.mipmap.no_gps 
     }; 
     bounds = new LatLngBounds.Builder(); 

     for (MapPins pin : pins) { <***** Here is my error ***> 
      MarkerOptions options = new MarkerOptions().position(new LatLng(pin.getLatitude(), pin.getLongitude())); 
      options.title(pin.getName()); 
      options.snippet(pin.getDepth()); 
      options.icon(BitmapDescriptorFactory.fromResource(numMarkersInRainbow[pin.getMarker()])); 

      Marker mkr = googleMap.addMarker(options); 
      mMarkers.put(mkr.getId(), pin.getSiteid()); 
      bounds.include(new LatLng(pin.getLatitude(), pin.getLongitude())); 
     } 
    } 

В строке: (MapPins pin : pins) {

Я получаю сообщение об ошибке

для каждого не применяется к типу '' retrofit2.call

Я уверен, что я что-то с видом , Что мне не хватает?

ответ

2

Вы должны использовать retrofit2.Response экземпляр, который вы получите, и от него вы можете получить body of the response, который является List<MapPins>:

for (MapPins pin : response.body()) { 
    // ... 
} 

Но вы должны также проверить, что response was successful:

if (!response.isSuccessful()) { 
    // handle 
} 
+0

Большое спасибо, что он работает сейчас. – Charley57

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