Как найти ImageView внутри GridView?

Мне нужно получить определенный ImageView внутри моего GridView. Я пробовал это, но это дает исключение NullPointerException:

ImageView imageView = (ImageView) myGridView.getChildAt(1);
imageView.setSomething();

Может ли кто-нибудь сказать мне, как это исправить? Спасибо


person hyperloris    schedule 28.10.2012    source источник


Ответы (3)


Я предполагаю, что вы делаете это на этапе создания (onCreate(), onResume() и т. д.), но представления не рисуются до после завершения всех этих методов "создания". К сожалению, обратного вызова нет onFinishedDraw()...

Однако вы можете поместить свой код в Runnable:

Runnable tweakChild = new Runnable() {
    @Override
    public void run() {
        ImageView imageView = (ImageView) myGridView.getChildAt(1);
        imageView.setSomething();
    }
};

И передайте этот Runnable вашему обработчику GridView (например, внутри onCreate()):

myGridView.post(tweakChild);
person Sam    schedule 28.10.2012

Вам нужно просто реализовать метод getItem() в вашем ImagaViewAdapter. Вы должны возвращать ноль.

person Akshika47    schedule 04.03.2015

На самом деле, классический способ настройки этих представлений — через getView() адаптера.

См. некоторые пояснения здесь:

https://stackoverflow.com/a/6243248/1665128

Как найти элемент внутри сетки в Android?

http://androidforums.com/developer-101/146035-get-element-view-gridview.html

person full.stack.ex    schedule 28.10.2012