63 votes

comment vérifier si un ImageView est attaché avec une image dans Android

Je définis une image sur ImageView dans le code Android et non dans XML, mais je n'arrive pas à savoir comment vérifier si cette image a été définie ou non dans Java.

Essayé avec imageViewOne.getVisibility() == 0 Mais ça ne marche pas

Si l'image a été définie sur ImageView, je joins cette image pour l'envoi de courrier.

164voto

PC. Points 2672

imageViewOne.getVisibility() == 0

utilisez plutôt ceci :

 imageViewOne.getDrawable() == null

De la documentation :

/** * Obtient le Drawable actuel, ou null si aucun Drawable n'a été * attribué. * * @return le dessin de la vue, ou null si aucun dessin n'a été * attribué. * */ public Drawable getDrawable() {

}

48voto

Norman Points 341

Notez que si vous définissez une image via ImageView.setImageBitmap(BITMAP) elle crée en interne un nouveau BitmapDrawable même si vous passez null . Dans ce cas, la vérification imageViewOne.getDrawable() == null est fausse à tout moment. Pour savoir si une image est définie, vous pouvez procéder comme suit :

 private boolean hasImage(@NonNull ImageView view) {
     Drawable drawable = view.getDrawable();
     boolean hasImage = (drawable != null);

     if (hasImage && (drawable instanceof BitmapDrawable)) {
         hasImage = ((BitmapDrawable)drawable).getBitmap() != null;
     }

     return hasImage;
}

4voto

Elenasys Points 23268

La bonne façon de vérifier si l'ImageView est attachée à l'image est :

  if (imageView.getDrawable() == null){
       //Image doesn´t exist.
   }else{
        //Image Exists!.
 }

Certaines méthodes pour charger des images dans ImageView comme l'utilisation de Glide ou Picasso ont un peu de retard, nous devons donc attendre quelques millisecondes pour vérifier :

     //Load Image.
    Glide.with(this)
            .load(imageURL)
            .into(imageView);

   //Wait for 500 ms then check!.
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
           if (imageView.getDrawable() == null){
              //Image doesn´t exist.
           }else{
              //Image Exists!.
           }
        }
    }, 500

2voto

David Kariuki Points 508
ImageView myImage = (ImageView) findViewById(R.id.imageView);

if (myImage.getDrawable() == null){

//The imageView is empty

} else{ 


// The imageView is occupied.

}

ou

 ImageView myImage = (ImageView) findViewById(R.id.imageView);

if ( null == myImage.getDrawable()){

//The imageView is empty

} else{ 


// The imageView is occupied.

}

0voto

Raz Points 2413

Vous pouvez faire imageViewOne.getDrawable() pour l'image que vous avez définie sur l'attribut src - ce qui signifie setImageResource/Bitmap. Ou imageViewOne.getBackground() pour l'attribut background - signifiant setBackground.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X