Autore Topic: Gridview con ingrandimento immagini e selezione del nome del file.  (Letto 315 volte)

Offline marcellino248

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend G300
  • Sistema operativo:
    windows
0
Salve a tutti,
Vorrei farvi una domanda la cui risposta probabilmente è semplicissima, ma sono alla mia prima "vera" app e sto diventando matto.
Io ho una gridView con immagini. Voglio che cliccando sull'immagine questa venga ingrandita a tutto schermo (oppure che venga visualizzata una versione della stessa immagine a maggior risoluzione, sempre a schermo intero).

Stavo cercando di farlo con un Toast, facendogli sputare fuori una versione ad alta risoluzione dell'immagine, ma c'è qualcosa che mi sfugge: come faccio a fargli capire qual è l'immagine da mostrare?

Mi spiego meglio.

per creare la GridView ho seguito l'esempio preso qui:

Grid View | Android Developers

Lì ti fa creare la classe ImageAdapter in questo modo:

Codice (Java): [Seleziona]
public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // 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;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7
    };
}


poi ho trovato questo codice per i Toast:

Codice (Java): [Seleziona]
ImageView imageForToast = new ImageView(MainActivity.this);
imageForToast.setImageResource(R.drawable.icon);

Toast mioToast = new Toast(MainActivity.this);
mioToast.setView(imageForToast);

mioToast.show();

Però in questo modo qualunque immagine della griglia clicco mi mostra sempre la stessa, quella che qui è chiamata icon.

Come faccio a dirgli che per ogni immagine della griglia deve far uscire un'immagine differente?
Visto che con il codice di questo esempio cliccando sull'immagine esce un toast con il numero della posizione, pensavo di inserire le immagini grandi in un array e fare in modo che il toast tirasse fuori l'immagine nella posizione dell'array corrispondente alla posizione cliccata, ma... dirlo è una cosa e farlo un'altra. Sarò scemo, non ci arrivo.

Oppure c'è un modo per mostrare semplicemente l'immagine cliccata ingrandita?

Calcoliamo anche un'altra funzione che deve avere questa griglia. Al secondo click sull'immagine grande dovrebbe memorizzare in una variabile il nome del file, perché dovrò riutilizzarlo più tardi. Alla luce di questo fatto, è possibile realizzare 'sta cosa senza dover creare una nuova activity per ogni immagine cliccata?

Grazie e scusate l'ignoranza...