У меня есть список, который загружается в изображение предварительного просмотра в строку, но когда я немного прокручиваюсь и заставляю строку снова появляться, изображение, похоже, перезагружается, как если бы оно снова загружалось и снова декодировалось , Я использую AQuery прямо сейчас, чтобы загрузить изображение, но я попробовал загрузчик изображений Novoda и универсальный загрузчик изображений Nostra, а ImageViews «перезагрузили» себя.ListView «перезагружает» ImageView на прокрутке, как я могу предотвратить это?
Вот мой упрощенный метод GetView (изображение Вставляется в нижней части):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FrameLayout postItem = (FrameLayout) convertView;
//final PostHolder holder;
if(null == postItem){
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
postItem = (FrameLayout) inflater.inflate(R.layout.column_post, parent, false);
}
final AQuery aq = new AQuery(postItem);
JSONObject thePost = null;
try {
thePost = mPosts.getJSONObject(position).getJSONObject("data");
} catch (Exception e) {
System.out.println("errreoroer");
}
String postThumbnailUrl = null;
String author = null;
String domain = null;
String subreddit = null;
int votes = 0;
int numComments = 0;
long createdUtc = 0;
final HashMap<String, Object> postData = new HashMap<String, Object>();
try {
postData.put("title", thePost.getString("title"));
//parse thumbnail
postThumbnailUrl = thePost.getString("thumbnail");
postData.put("url", thePost.getString("url"));
postData.put("permalink", thePost.getString("permalink"));
postData.put("is_self", thePost.getBoolean("is_self"));
//whent it was made
createdUtc = thePost.getLong("created_utc");
//author
author = thePost.getString("author");
subreddit = thePost.getString("subreddit");
domain = thePost.getString("domain");
votes = thePost.getInt("ups") - thePost.getInt("downs");
//num_comments
numComments = thePost.getInt("num_comments");
} catch (Exception e) {}
//gets the direct url to the image
mSmartContent.getDirectMedia((String)postData.get("url"), new Callbacks() {
@Override
public void callback(Object obj) {
Bundle cData = (Bundle)obj;
if (cData.getString("type") == "pic") {
aq.id(R.id.imagePreview).visibility(View.VISIBLE).image((String)cData.getString("url"));
} else {
aq.id(R.id.imagePreview).visibility(View.GONE);
}
}
});
return postItem;
}
Спасибо заранее.
Универсальный загрузчик изображений и загрузчик изображений Novoda *** не перезагружают *** изображение снова из Интернета, но извлекают изображения из кеша, если он уже загружен один раз. –
Я понимаю, что они этого не делают, мне просто интересно, почему изображения занимают много времени, чтобы загрузить обратно из кеша, когда они меньше мегабайта. – vivatus
Если вы посмотрите на эти библиотеки, я бы поспорил, что у них есть какой-то предел использования памяти, прежде чем они начнут перерабатывать растровые изображения. У них могут быть API-интерфейсы, которые позволят вам преодолеть эти ограничения, но в противном случае это было бы ожидаемым поведением. Посмотрите на свой выход LogCat, и они будут представлять собой сообщения о сборе мусора. –