У меня большие проблемы с использованием цели внутри адаптера. Im путать о документации по кодуИспользование цели в Пикассо на адаптере
Объекты, реализующие этот класс сусло иметь рабочую реализацию {@link #equals (Object)} и {@link #hashCode()} для надлежащего хранения внутренне. Экземпляры этого интерфейса также будут сравниваться, чтобы определить, происходит ли переработка вида. Рекомендуется использовать , что вы добавляете этот интерфейс непосредственно к настраиваемому типу вида при использовании в адаптере, чтобы обеспечить правильное поведение рециркуляции .
Im пытается использовать объект таким образом:
class CustomTarget implements Target {
private ImageView imageView;
public CustomTarget(ImageView imageView) {
this.imageView = imageView;
}
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
imageView.setImageDrawable(new RoundedAvatarDrawable(bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
imageView.setImageDrawable(errorDrawable);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
imageView.setImageDrawable(placeHolderDrawable);
}
@Override
public boolean equals(Object o) {
return imageView.equals(o);
}
@Override
public int hashCode() {
return imageView.hashCode();
}
}
@Override
public View getView(int position, View v, ViewGroup parent) {
....
RoundedAvatarDrawable r = new RoundedAvatarDrawable(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_avatar_seahorse));
ImageCacheController.with(mContext).getPicasso().load(member.getPicture_url()).resize(100, 100).centerCrop().placeholder(r).error(r).into(new CustomTarget(viewHolder.ivAvatar));
....
}
Это не работает, и изображения переключаться между друг друга случайно
Похоже, что ваш 'getView()' сломан. Отправьте свой метод 'getView()' здесь. Если вам нужно, почему бы не попросить Eclipse генерировать 'equals()' и 'hashCode()' метод для вас. ** Щелкните правой кнопкой мыши> Источник> Генерировать 'hashCode()' и 'equals()' ... ** –
И BTW Picasso также принимает 'ImageView', поэтому вам не нужно писать этот класс-оболочку. Просто отправьте 'ImageView' в' in() 'метод. –
Я использую Target, потому что мне нужна вытачиваемая оболочка с именем «RoundedAvatarDrawable» -> imageView.setImageDrawable (новый RoundedAvatarDrawable (bitmap)); , То есть для круга изображение как круг. –