У меня есть gridview с использованием адаптера изображения для элементов, он реализован, как в этом примере: http://developer.android.com/resources/tutorials/views/hello-gridview.html
Кроме того, я добавил слушателя кликов для каждого элемента метода getView, который отправляет щелкнутую позицию в основной класс (вне ImageAdapter) с помощью обработчика.
Теперь я хочу обновить только соответствующий imageView, но:
Я не знаю, как получить изображениеView вне класса ImageAdapter (отправить с помощью обработчика? Он не сериализуется - создать буфер в ImageAdapter и getter?)
Я не уверен, какой метод использовать для изменения изображения.
В настоящее время я обновляю всю сетку каждый раз:
((ImageAdapter)gridview.getAdapter()).setImages(imageIds);
gridview.invalidate();
ImageAdapter:
public void setImages(int[] images) {
mImages = images;
notifyDataSetChanged();
}
заранее спасибо
То, что вы сейчас делаете, несколько правильно.
В качестве оптимизации вы можете использовать ArrayList<int>
в качестве изображений и создать метод в классе адаптера для изменения значения данного индекса с помощью ArrayList.set(int index, E element)
. Тогда вызов notifyDataSetChanged()
должен "теоретически" обновлять только измененный вид изображения :)