Итак, я использую представление recycler для отображения изображений в сетке и загрузки изображений с URL-адреса в виде растровых изображений с использованием библиотеки volley.
public void onBindViewHolder(final TrendingAdapter.ViewHolder viewHolder, int i) {
ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
if (bitmap != null) {
viewHolder.getmImageView().setImageBitmap(bitmap);
}
}
}, 0, 0, null,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
AppController.getInstance().addToRequestQueue(request);
}
Проблема заключается в том, что когда я прокручиваю и пропускаю одно или несколько представлений до того, как изображение будет загружено, и это представление будет повторно использовано, запрос на загрузку изображения не отменяется в этих промежуточных представлениях, что приводит к вспышке этого/тех изображений до того, как фактическое изображение будет загружается в этом представлении.
Поэтому я подумал об отмене этих запросов промежуточных изображений с помощью тегов, но не могу понять, как это приводит к отмене запроса и в других параллельных представлениях!
Также, когда я использую залп NetworkImageView (который сам обрабатывает такое отмену изображения), дает отличные результаты. Но мне нужно получить растровое изображение каждого изображения, чтобы выбрать из него цвета, поэтому я не могу использовать NetworkImageView.
В) Как отменить все ожидающие запросы изображений залпа (кроме того, который должен загружаться и не затрагивать другие параллельные представления) для определенного изображения, увеличенного с помощью recyclerview?