2014-12-05 2 views
1

Я получаю URL-адрес изображения с сервера (например, в API).Изображение не может быть установлено/отображено с пространством имени в Volley в Android

Образец изображения выглядит следующим образом;

"http://xyz.info/uploads/111968/Gruppenfoto Kika Lehrlinge.jpg"

, который содержит пробел в имя.

Я использовал следующий код, используя загрузчик изображений Volley для отображения изображения;

url = url.replace(" ", "%20"); 
holder.imgView.setImageUrl(url.toString(),MyVolley.getImageLoader()); 

Но оно не устанавливает изображение комплекта/дисплея.

Я много искал об этом, но не смог найти решения.

Пожалуйста, помогите мне.

Спасибо .....

+0

То, что вы написали неверный URL. Откуда вы его взяли? –

ответ

2

Попробуйте использовать ниже код:

getImgUrl().replaceAll("[ ]", "%20"); 

Заменить все пространство с выше кодом.

GITHUB Sample/Lib SWIPEVOLLEY

+1

Btw Это работает только для родной ОС. Я пробовал в устройствах Samsung и не работает. Nexus и Motorola и устройства с почти чистой ОС дают правильный результат. – DearDhruv

+0

лучше всего найти лучшее решение для всех ОС. –

1

Вы должны использовать URLEncoder.encode() вместо string.replace()

EDIT

Ваша проблема может быть, что при первом запуске кода, вы не URL закодировать пробелы, изображение, естественно, не может быть найдено, и этот факт был сохранен в кеше ImageLoader. Вы можете очистить кэш для этого конкретного URL и повторите попытку AppController.getInstance().getRequestQueue().getCache().remove(url); или даже лучше отключить кэш во время тестирования ти setShouldCache(false);

Кроме того, для того, чтобы выяснить тип ошибки, которая не позволяет вам показывать правильное изображение , вы могли бы заменить NetworkImageView с регулярным ImageView и использовать этот код

`` ` // Если вы используете нормальный ImageView imageLoader.get (URL, новый ImageListener() {

@Override 
public void onErrorResponse(VolleyError error) { 
    Log.e(TAG, "Image Load Error: " + error.getMessage()); 
} 

@Override 
public void onResponse(ImageContainer response, boolean arg1) { 
    if (response.getBitmap() != null) { 
     // load image into imageview 
     imageView.setImageBitmap(response.getBitmap()); 
    } 
} 

}); `` `

+0

Мы использовали его, но не были полезны – Rohan

+0

Вы используете Volley NetworkImageView в макете xml? Вы правильно инициализировали ImageLoader с RequestQueue и ImageCache? –

+0

да, я сделал все это – Rohan

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