JSON+Picasso (Вывод изображений в ListView)
JSON+Picasso (Вывод изображений в ListView)
Здравствуйте, уважаемые форумчане! Помогите пожалуйста разобраться.
Есть ListView в который выводится текст и картинка. Данные берутся с удаленного сервера в формате JSON.
Текст выводится отлично. А вот вывод изображения пока никак не получается настроить. Попытки сохранить картинку с помощью "Picasso" ни к чему не приводят. Хотя в отдельной программе без циклов и ListView все работает отлично.
protected void onPostExecute(String strJson) {
super.onPostExecute(strJson);
try {
JSONArray jsonObject = new JSONArray(strJson);
for (int i = 0; i < jsonObject.length(); i++) {
JSONObject key = jsonObject.getJSONObject(i);
param = new HashMap<String, String>();
String idapp = key.getString("idapp");
String imgs = key.getString("imgs");
param.put(ATTRIBUTE_NAME_IDAPP, idapp);
param.put(ATTRIBUTE_NAME_IMGS, imgs);
Picasso.with(context) //если написано "context" как в примере то выдается ошибка "context cannot be resolved to a variable" Не ругается если написано "getApplicationContext()"
.load("http://site.ru/"+imgs) // имя картинки приходит в таком формате "083a8c3e3edcbe8c7bbf1ae5549179d7.jpg"
.into(???); //так же не понятно, что нужно написать сюда, что бы подгружалась картинка.
offersArray.add(param);
}
loadOffers(offersArray);
} catch (JSONException e) {
e.printStackTrace();
}
}
Сюда нужно подгрузить картинку
<ImageView
android:id="@+id/icon"
android:layout_width="100sp"
android:layout_height="100sp"
android:layout_marginLeft="4px"
android:layout_marginRight="10px"
android:layout_marginTop="4px" >
</ImageView>
Есть ListView в который выводится текст и картинка. Данные берутся с удаленного сервера в формате JSON.
Текст выводится отлично. А вот вывод изображения пока никак не получается настроить. Попытки сохранить картинку с помощью "Picasso" ни к чему не приводят. Хотя в отдельной программе без циклов и ListView все работает отлично.
protected void onPostExecute(String strJson) {
super.onPostExecute(strJson);
try {
JSONArray jsonObject = new JSONArray(strJson);
for (int i = 0; i < jsonObject.length(); i++) {
JSONObject key = jsonObject.getJSONObject(i);
param = new HashMap<String, String>();
String idapp = key.getString("idapp");
String imgs = key.getString("imgs");
param.put(ATTRIBUTE_NAME_IDAPP, idapp);
param.put(ATTRIBUTE_NAME_IMGS, imgs);
Picasso.with(context) //если написано "context" как в примере то выдается ошибка "context cannot be resolved to a variable" Не ругается если написано "getApplicationContext()"
.load("http://site.ru/"+imgs) // имя картинки приходит в таком формате "083a8c3e3edcbe8c7bbf1ae5549179d7.jpg"
.into(???); //так же не понятно, что нужно написать сюда, что бы подгружалась картинка.
offersArray.add(param);
}
loadOffers(offersArray);
} catch (JSONException e) {
e.printStackTrace();
}
}
Сюда нужно подгрузить картинку
<ImageView
android:id="@+id/icon"
android:layout_width="100sp"
android:layout_height="100sp"
android:layout_marginLeft="4px"
android:layout_marginRight="10px"
android:layout_marginTop="4px" >
</ImageView>
Re: JSON+Picasso (Вывод изображений в ListView)
Я гружу картинки используя эту библиотечку https://github.com/koush/UrlImageViewHelper используя метод SetUrlDrawable
Эта штука асинхронно грузит картинку и после загрузки устанавливает ее в компонент ImageView, также она умеет кэшировать изображения. Может пригодится
Код: Выделить всё
UrlImageViewHelper.SetUrlDrawable(/*ImageView куда нужно положить изображение*/, /*Url картинки*/);
Re: JSON+Picasso (Вывод изображений в ListView)
Спасибо за совет. Попробовал не работает( Приложение просто вылетает. Может еще есть какие-нибудь не сильно заумные способы, скачивания и вывода изображений в ListView?
Re: JSON+Picasso (Вывод изображений в ListView)
Ну смысл тот же. Делаете класс наследник от AsyncTask, передаете ему ImageView в который нужно положить картинку. В методе RunInBackground грузите картинку, а в методе OnPostExecute результат запихиваете в переданный ImageView.
Re: JSON+Picasso (Вывод изображений в ListView)
А как вообще можно проверить что лежит в кэше? И как от туда загрузить картинку в ListView?
Re: JSON+Picasso (Вывод изображений в ListView)
Для этого нужно кэш реализовать, где нить хранить картинки, можно в памяти(этот вариант будет забивать оперативку и после перезапуска приложения кэш очистится), а можно на диске телефона. А когда загрузчику будет приходить команда загрузить изображение проверять есть ли оно в кэше, если да, то отдать из кэша, если нет загрузить.bydirect писал(а):А как вообще можно проверить что лежит в кэше? И как от туда загрузить картинку в ListView?
Re: JSON+Picasso (Вывод изображений в ListView)
Я так понял что в picasso и UrlImageViewHelper это реализовано автоматически. Как понять что и где хранится при использовании любой из этих библиотек?
Re: JSON+Picasso (Вывод изображений в ListView)
ну в UrlImageViewHelper можно исходники посмотреть, а про picasso ничего не знаюbydirect писал(а):Я так понял что в picasso и UrlImageViewHelper это реализовано автоматически. Как понять что и где хранится при использовании любой из этих библиотек?
Re: JSON+Picasso (Вывод изображений в ListView)
Если бы я понимал что нибудь в исходниках, то не задавал бы глупых вопросов)))