2014-12-02 3 views
2

Как я могу использовать адаптер AdaptView от Robobinding вместе с динамическим загрузчиком изображений, например, ion или picasso?Как использовать Robobinding с загрузкой асинхронного изображения?

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

Это то, что я есть:

@org.robobinding.annotation.PresentationModel 
public class LocationAdapterPresentationModel implements HasPresentationModelChangeSupport { 
private final PresentationModelChangeSupport changeSupport; 
private final Activity activity; 
List<Location> locations; 

public LocationAdapterPresentationModel(Activity activity, List<Location> locs){ 
    locations = locs; 
    this.changeSupport = new PresentationModelChangeSupport(this); 
    this.activity = activity; 
} 

@ItemPresentationModel(LocationPresentationModel.class) 
public List<Location> getLocations(){ 
    return new ArrayList<Location>(locations); 
} 

public void refreshLocations() { 
    changeSupport.firePropertyChange("locations"); 
} 

public void setLocations(List<Location> locs){ 
    this.locations = locs; 
} 

@Override 
public PresentationModelChangeSupport getPresentationModelChangeSupport() { 
    return changeSupport; 
} 

}

@org.robobinding.annotation.PresentationModel 
public class LocationPresentationModel implements ItemPresentationModel<Location> { 

... 
my getter/setter 
... 
} 

Но где поставить динамический загрузчик. Было бы легко, когда это всего лишь один элемент, но как заставить его работать с каждой записью в списке мест?

+0

как вы решили свою проблему? –

+0

ItemPrensentationModel поставляется с методом updateData. Это решает. – Dirk

ответ

3

ItemPresentationModel поставляется с методом updateData, где я помещаю все необходимое. Это решает мою проблему.

@Override 
public void updateData(Location location, ItemContext itemContext) { 
     ViewGroup itemView = (ViewGroup) itemContext.getItemView(); 
    ImageView image1 = (ImageView) itemView.findViewById(R.id.image1); 
    ImageView image2 = (ImageView) itemView.findViewById(R.id.image2); 

    Ion.with(image1) 
      .placeholder(R.drawable.loading) 
      .error(R.drawable.emptypicture) 
      .animateLoad(R.anim.loading_circle) 
      .load(location.getPreviewImg1()); 
} 
Смежные вопросы