2016-03-04 1 views
2

После this Ответ: Я пытаюсь лениво загружать изображения в ListView с помощью Picasso. Это мой код:Установить изображение, загруженное (с помощью перехватчика) с помощью Picasso

public class PicassoInterceptor implements Interceptor { 

private String param1; 
private String param2; 
private String param3; 
private int param4; 
private String param5; 

public PicassoInterceptor(String param1, String param2, String param3, int param4, String param5) { 
    this.param1 = param1; 
    this.param2 = param2; 
    this.param3 = param3; 
    this.param4 = param4; 
    this.param5 = param5; 
} 

@Override 
public Response intercept(Chain chain) throws IOException { 
    final MediaType JSON 
      = MediaType.parse("application/json; charset=utf-8"); 
    Map<String, String> map = new HashMap<String, String>(); 
    map.put("param1", param1); 
    map.put("param2", param2); 
    map.put("param3", param3); 
    map.put("param4", String.valueOf(param4)); 
    String requestJsonBody = new Gson().toJson(map); 
    RequestBody body = RequestBody.create(JSON, requestJsonBody); 
    final Request original = chain.request(); 
    final Request.Builder requestBuilder = original.newBuilder() 
      .url(param5) 
      .post(body); 
    return chain.proceed(requestBuilder.build()); 
} 
} 

Адаптер, внутри метода GetView:

OkHttpClient okHttpClient = new OkHttpClient(); 
    okHttpClient.interceptors().add(new PicassoInterceptor(param1, param2,param3,param4, param5)); 

    OkHttpDownloader downloader = new OkHttpDownloader(okHttpClient); 
    Picasso picasso = new Picasso.Builder(context).downloader(downloader).build(); 

Теперь, если я правильно понял, изображения загружаются. Но как установить его в виде изображения?

РЕДАКТИРОВАТЬ:

Изображение получено в BASE64.

+0

вы ее решили? –

+0

Не так, как я предполагал, пришлось попросить парня-сервера изменить метод с POST на GET и создать URL-адрес. Таким образом, работает, но не удалось заставить его работать с POST. – Fustigador

ответ

0

Просто добавьте метод into() и передать ImageView:

Picasso picasso = new Picasso.Builder(context).into(imageView).downloader(downloader).build(); 
+0

Это не работает. Невозможно вызвать метод, в котором вы его написали. – Fustigador

+0

Вам нужно создать aconstructor и просто передать imageView в этом классе PicassoInterceptor –

+0

Но я не могу позвонить в метод, где вы его положили ... также этот код находится в адаптере ListView, а не в перехватчике. – Fustigador

1

Использование:

picasso.load(param5).fit().into(imageView); 

Это действительно не имеет значения, которые вы даете URL-адрес функции нагрузки() - потому что вы перезаписать его в перехватчик. Но я все равно даю законный, чтобы избежать проблем.

Или вы можете изменить ваш перехватчик таким образом: Picasso load image with HTTP post

+0

И фотоУри ...? У меня нет URI. – Fustigador

+0

Picasso предназначен для загрузки изображений, поэтому вы должны иметь изображение, которое хотите загрузить. Функция «load» может получить файл, Uri, URL или идентификатор ресурса. Какое изображение вы хотите загрузите? –

+0

Я знаю, для чего Пикассо. Проблема в том, что мне нужно загружать изображения с помощью запроса POST, поэтому я использовал Interceptor, поскольку использование по умолчанию использует GET-запрос. Поскольку URL-адрес будет всегда одним и тем же (поскольку его почтовый запрос), ваш путь не будет работать. – Fustigador