CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 4eyes81 con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

Picasso non carica immagini nella gridView, schermata nera

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    87

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Picasso non carica immagini nella gridView, schermata nera

    Buongiorno ragazzi, ho un problema nel caricamento di una GridView attraverso la libreria Picasso. L'uso di questa libreria è obbligato per migliorare lo scrolling della GridView. Ma passiamo al problema. In pratica nel momento in cui apro l'activity dove dovrebbero essere visualizzate le immagini con la gridVIew, mi appare una schermata nera. Ecco il codice:

    GridViewGalleryActivity la griglia di immagini verrà visualizzata qua:

    codice:
    public class GridViewGalleryActivity extends Activity {
    
        private Utils utils;
        private ArrayList<String> imagePaths = new ArrayList<String>();
        private GridViewImageAdapter adapter;
        private GridView gridView;
        private int columnWidth;
    
    
        //TODO: 1. CERCARE DI TROVARE SOLUZIONE A PICASSO
        //TODO: 2. FARE IN MODO CHE QUANDO MODIFICO UN FILE, SI SCELGANO I TAG PREDEFINITI, E LE LOCALITÀ REGISTRATE.
        //TODO: 3. CERCARE DI FAR RICARICARE AUTOMATICAMENTE LA GRIDVIUE DOPO LA MODIFICA.
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //permette il fullscreen in maniera costante
            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_grid_view);
    
            gridView = (GridView) findViewById(R.id.grid_view);
    
            utils = new Utils(this);
    
            // Initilizing Grid View
            InitilizeGridLayout();
    
            Intent i = getIntent();
    
            imagePaths = i.getStringArrayListExtra("myArray");
    
            // Gridview adapter
            adapter = new GridViewImageAdapter(GridViewGalleryActivity.this, columnWidth, imagePaths, this);
    
            gridView.setOnItemClickListener(OnImageClickListener);
            gridView.setOnItemLongClickListener(OnImageLongClickListener);
    
            // setting grid view adapter
            gridView.setAdapter(adapter);
    
    
        }
    
    
        AdapterView.OnItemClickListener OnImageClickListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent i = new Intent(GridViewGalleryActivity.this, FullScreenViewActivity.class);
                i.putExtra("position", position);
                i.putStringArrayListExtra("myArray", imagePaths);
                GridViewGalleryActivity.this.startActivity(i);
            }
        };
    GridViewGalleryActivity

    codice:
    public class GridViewImageAdapter extends BaseAdapter {
    
        private Activity _activity;
        private ArrayList<String> _filePaths = new ArrayList<String>();
        private int imageWidth;
        private Context _context;
    
        public GridViewImageAdapter(Activity activity, int imageWidth, ArrayList<String> filePaths, Context context) {
    
            this._activity = activity;
            this.imageWidth = imageWidth;
            this._filePaths = filePaths;
            this._context = context;
        }
    
        @Override
        public int getCount() {
            return this._filePaths.size();
        }
    
        @Override
        public Object getItem(int position) {
            return this._filePaths.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
      /*  @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;
    
            if (convertView == null) {
                imageView = new ImageView(_activity);
            } else {
                imageView = (ImageView) convertView;
            }
    
            // get screen dimensions
            Bitmap image = decodeFile(_filePaths.get(position), imageWidth,imageWidth);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, imageWidth));
    
            imageView.setImageBitmap(image);
    
            return imageView;
        }*/
    
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;
    //            check to see if we have a view
            if (convertView == null) {
    //                no view - so create a new one
                imageView = new ImageView(_context);
            } else {
    //                use the recycled view object
                imageView = (ImageView) convertView;
            }
    
            Picasso.with(_activity)
                    .load(_filePaths.get(position))
                    .noFade()
                    .centerCrop()
                    .into(imageView);
            return imageView;
        }
    
    
        /*
         * Resizing image size
         */
        public static Bitmap decodeFile(String filePath, int WIDTH, int HIGHT) {
            try {
    
                File f = new File(filePath);
    
                BitmapFactory.Options o = new BitmapFactory.Options();
                o.inJustDecodeBounds = true;
                BitmapFactory.decodeStream(new FileInputStream(f), null, o);
    
                final int REQUIRED_WIDTH = WIDTH;
                final int REQUIRED_HIGHT = HIGHT;
                int scale = 1;
                while (o.outWidth / scale / 2 >= REQUIRED_WIDTH
                        && o.outHeight / scale / 2 >= REQUIRED_HIGHT)
                    scale *= 2;
    
                BitmapFactory.Options o2 = new BitmapFactory.Options();
                o2.inSampleSize = scale;
                return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    FullScreenViewActivity

    codice:
    public class FullScreenViewActivity extends Activity {
    
        private Utils utils;
        private FullScreenImageAdapter adapter;
        private ViewPager viewPager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    
            setContentView(R.layout.activity_fullscreen_view);
    
            viewPager = (ViewPager) findViewById(R.id.pager);
    
            Button btnBack = (Button)findViewById(R.id.btn_back);
            btnBack.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
            utils = new Utils(getApplicationContext());
    
            Intent i = getIntent();
            int position = i.getIntExtra("position",0);
            ArrayList<String> imagePath = i.getStringArrayListExtra("myArray");
    
            //TODO CONTROLLARE LA CLASSE FullScreenImageAdapter. CAUSA NULLPOINTIEXCEPTION
    
            adapter = new FullScreenImageAdapter(FullScreenViewActivity.this,imagePath);
    
            viewPager.setAdapter(adapter);
    
            // displaying selected image first
            viewPager.setCurrentItem(position);
        }
    }
    FullScreenImageAdapter

    codice:
    public class FullScreenImageAdapter extends PagerAdapter {
    
        private Activity _activity;
        private ArrayList<String> _imagePaths;
        private LayoutInflater inflater;
    
        // constructor
        public FullScreenImageAdapter(Activity activity,
                                      ArrayList<String> imagePaths) {
            this._activity = activity;
            this._imagePaths = imagePaths;
        }
    
        @Override
        public int getCount() {
            return this._imagePaths.size();
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((RelativeLayout) object);
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            TouchImageView imgDisplay;
            Button btnClose;
    
            inflater = (LayoutInflater) _activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container,
                    false);
    
            imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay);
    
          //  BitmapFactory.Options options = new BitmapFactory.Options();
          //  options.inPreferredConfig = Bitmap.Config.ARGB_8888;
          //  Bitmap bitmap = BitmapFactory.decodeFile(_imagePaths.get(position), options);
    
          //  imgDisplay.setImageBitmap(bitmap);
    
            if (position != -1) {
                Picasso.with(_activity)
                        .load(_imagePaths.get(position))
                        .noFade()
                        .centerCrop()
                        .into(imgDisplay);
            } else {
                Picasso.with(_activity)
                        .load(R.raw.big_problem)
                        .noFade()
                        .centerCrop()
                        .into(imgDisplay);
            }
    
            ((ViewPager) container).addView(viewLayout);
    
            return viewLayout;
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((RelativeLayout) object);
    
        }
    }
    COme già ribadito più volte sia nel titolo che all'inizio della discussione, le immagini non vengono caricate e mi si apre una schermata nera. Come posso risolvere? Spero di essere stato chiaro. BUon ferragosto a tutti

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy