У меня есть GridView
, содержащий ImageView
s, я бы хотел обновить View
с, если изображение успешно загружено и преобразовано в объект Bitmap
. Адаптер GridView
имеет метод getView
, который может устанавливать изображение по умолчанию или декодировать до Bitmap
загруженное изображение, если оно существует.Эффективное обновление GridView child Просмотров
Чтобы обновить GridView можно использовать метод myGridView.getAdapter().notifyDataSetChanged()
, поэтому я создал BroadcastReceiver
в состоянии обнаружить, если успешно загружен файл один из изображений, мне нужно, и в конечном счете отправить Listener
событие в деятельности, содержащий GridView
, чтобы обновить его , Поскольку адаптер GridView может содержать даже тысячи элементов, я хотел бы выполнить запуск notifyDataSetChanged
, только если видна View
для этого конкретного файла.
Я думал сделать что-то вроде этого:
for(int i=0;i<myGridView.getChildCount();i++){
if(myGridView.getChildAt(i).isTheOneINeed) { //notifyDataSetChanged(); break; }
}
Но я немного обеспокоен: а что если пользователь прокручивает GridView и childView становится нулевым или он заменен одним из следующих пунктов в Adapter
? Есть ли более безопасный способ сделать это?
Методы 'getVisiblePosition', кажется, то, что я искал! – Vektor88