Android GridView проблема с позицией 0 - PullRequest
0 голосов
/ 19 февраля 2012

Я работаю с примером GridView на Android Developers .Я адаптирую пример кода для отображения доски Судоку с использованием изображений GridView, 9x9.(Это могут быть 9x9 текстовых цифр, но я выбрал изображения).

Пример кода содержит это для установки ImageViews (mThumbIds - это массив идентификаторов ресурсов изображения):

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

Пока все хорошо и инициализируется нормально.

Я отслеживаю imageViews для каждой ячейки, чтобы использовать их, когда хочу отобразить другое изображение (нажав на само изображение).

Опять же, это прекрасно работает, за исключением позиции 0 (первый элемент в GridView).Это решительно остается с изображением, установленным выше от mThumbIds.то есть я использую

    imageView.setImageResource(imgId)

для изменения изображений в разных местах вокруг сетки, и все они меняются, за исключением позиции 0.

Код выполняется без исключений, но изображение никогда не меняется.Есть ли что-то особенное в позиции 0?Это становится сценарием выпадения волос - любой совет с благодарностью получен.

1 Ответ

0 голосов
/ 23 февраля 2012

Ваш код getView выглядит нормально, но он, вероятно, не вызывается.Вам нужно вызвать перерисовку.

Если ваш адаптер - BaseAdapter (или подкласс BaseAdapter), вызовите notifyDataSetChanged () на адаптере сетки, чтобы вызвать перерисовку.Примерно так:

((BaseAdapter) mGridView.getAdapter ()). NotifyDataSetChanged ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...