Gridview para mostrar imágenes storage Firebase

Iniciado por rubia28, 17 Diciembre 2021, 19:19 PM

0 Miembros y 1 Visitante están viendo este tema.

rubia28

Buenas a todos,

Estoy desarrollando un juego de puzzles para android y me gustaría que las imágenes que tiene el usuario para elegir el puzzle en lugar de ser de una carpeta local, fuesen de una carpeta de firebase.

Actualmente, estas imágenes tienen un adaptador para que aparezcan en un gridview con un marco etc. Pero no consigo saber como poder dar acceso al imageAdapter y a la clase Main para que muestre las imágenes de la carpeta como hace ahora en local pero con los archivos de firebase.

He buscado el multitud de sitios pero no encuentro nada similar. ¿Alguien puede echarme una mano?

Actualmente tengo el imageAdapter y el MainActivity así;

ImageAdaptaer;

Código (java) [Seleccionar]
public ImageAdapter(Context c) {
        mContext = c;
        am = mContext.getAssets();
        try {
            files  = am.list("img");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


Código (java) [Seleccionar]
private Bitmap getPicFromAsset(ImageView imageView, String assetName) {
        // Obtener las dimensiones de la Vista
        int targetW = imageView.getWidth();
        int targetH = imageView.getHeight();

        if(targetW == 0 || targetH == 0) {
            // la vista no tiene dimensiones establecidas
            return null;
        }

        try {
            InputStream is = am.open("img/" + assetName);
            // Obtener las dimensiones del mapa de bits
            BitmapFactory.Options bmOptions = new BitmapFactory.Options();
            bmOptions.inJustDecodeBounds = true;
            BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions);
            int photoW = bmOptions.outWidth;
            int photoH = bmOptions.outHeight;

            // Determine cuánto reducir la imagen
            int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

            is.reset();

            // Decodifica el archivo de imagen en un mapa de bits de tamaño para llenar la vista
            bmOptions.inJustDecodeBounds = false;
            bmOptions.inSampleSize = scaleFactor;
            bmOptions.inPurgeable = true;

            return BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions);
        } catch (IOException e) {
            e.printStackTrace();

            return null;
        }
    }


MainActivity;

Código (java) [Seleccionar]
AssetManager am = getAssets();
        try {
            final String[] files = am.list("img");

            GridView grid = findViewById(R.id.grid);
            grid.setAdapter(new ImageAdapter(this));
            grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                    Intent intent = new Intent(getApplicationContext(), PuzzleActivity.class);
                    intent.putExtra("assetName", files[i % files.length]);


Mil gracias por vuestra ayuda.

rub'n

Recuerda que Firebase es un servicio externo, deberas usar su api para conectarte a el, tienes en ejmplos en Java y Kotlin.

* https://firebase.google.com/docs/storage/android/download-files


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen