Rellenar un GridView con ImageViews de forma dinámica / programática utilizando un ImageAdapter

Intento desarrollar una aplicación de Android que permita al usuario obtener datos de flickr y mostrarlos en unGridView (con una bonita animación 3D). Después de algunas aventuras casi lo tengo funcionando, pero ahora estoy atascado.

Aquí está el problema:

Obtuve un hilo de UI "LoadPhotosTask" que obtiene las imágenes de flickr, al igual que la aplicación de código abiertosecuencia de fotos. En el metodoonProgressUpdate(LoadedPhoto... value) de esa subclase que llamoaddPhoto(). Hasta ahora todo está bien: obtuve algunos buenos datos de Bitmap y Flickr.photo con toda la información que necesito.

        @Override
    public void onProgressUpdate(LoadedPhoto... value) {

        addPhoto(value);
    }

Por otro lado tengo unGridView. Ahora quiero llenarlo con las fotos. Tiene un adaptador llamadoImageAdapter (que se extiendeBaseAdapter, mira estotutorial) Si uso una matriz dentro delImageAdapter clase puedo poblar elGridView con algunas imágenes de muestra Pero si quiero poblarlo en tiempo de ejecución, no sé qué hacer.

¿Cómo tengo que configurar el método getView en elImageAdapter? Estaba tratando de llenar la matriz dentro delImageAdapter clase con mis valores enaddPhoto, pero no muestra nada.

Entonces, antes que nada, estaba configurando la matriz con la cantidad de fotos que quería mostrar en la cuadrícula de esa manera (el código está dentro delImageAdapter clase):

// class variable
private ImageView[] mThumbIds;

    [...] 

    public void setupArray(int count) {
            this.mThumbIds = new ImageView[count];
        }

Entonces llamo a este método con la longitud de mi fotolista:

    final Flickr.PhotoList list = params[0];
        final int count = list.getCount();
        int helper = 0;
    imagead.setupArray(count);

Luego llamo al método getView manualmente dentro del método addPhoto:

private void addPhoto(LoadedPhoto... value) {

    ImageView image = (ImageView) mInflater.inflate(
    R.layout.grid_item_photo, null);
    image.setImageBitmap(value[0].mBitmap);
    image.setTag(value[0].mPhoto);

    imagead.setmThumbIds(image, value[0].mPosition);
    imagead.getView(value[0].mPosition, null, mpicturesGrid);

}

Ese es el método getView dentro de ImageAdapter:

    public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) { // if it's not recycled, initialize some
        // attributes

        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(EDGE_LENGTH,
        EDGE_LENGTH));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(0, 0, 0, 0);
        imageView.setVisibility(View.VISIBLE);

    } else {

        imageView = (ImageView) convertView;
    }
    imageView.setImageDrawable(mThumbIds[position].getDrawable());
    imageView.setTag(mThumbIds[position].getTag());

    return imageView;

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta