0

Je souhaite afficher une barre de progression dans mon adaptateur personnalisé lors du téléchargement!Afficher une barre de progression dans un adaptateur personnalisé lors d'un téléchargement avec volley

Il est ma classe Adaptateur

public class ImageAdapter extends BaseAdapter { 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = ((Activity) context).getLayoutInflater().inflate(layoutResourceId, parent, false); 
      holder.pictureView = (GalerieImageView) convertView.findViewById(R.id.GalerieView); 
      holder.progressBar = (ProgressBar) convertView.findViewById(R.id.progressBarGalerie); 
      holder.progressBar.setVisibility(View.VISIBLE); 
      holder.progressBar.setIndeterminate(true); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 


     ImageLoader imageLoader = ImageCacheManager.getInstance().getImageLoader(); 
     if (arrayList.get(position).getTurl() != null) { 
      Log.i("lien", "" + arrayList.get(position).getTurl()); 
      holder.pictureView.setImageUrl(arrayList.get(position).getTurl(), imageLoader); 
      holder.pictureView.setVisibility(View.VISIBLE); 

      holder.pictureView.setDefaultImageResId(R.drawable.ico_loading); 
      holder.pictureView.setErrorImageResId(R.drawable.ico_error); 
      holder.pictureView.setLayoutParams(new RelativeLayout.LayoutParams(imageWidth, imageWidth)); 
      holder.pictureView 
        .setResponseObserver(new GalerieImageView.ResponseObserver() { 
         @Override 
         public void onError() { 
          holder.progressBar.setVisibility(View.GONE); 
         } 

         @Override 
         public void onSuccess() { 
          holder.progressBar.setVisibility(View.GONE); 

         } 
        }); 
     } else { 
      //holder.pictureView.setVisibility(View.GONE); 
     } 
     return convertView; 
    } 
} 

My Custom NetworkView avec Observer (GaleryImageView) elle basée sur this StackOverFlow answer. Je suis incapable d'afficher la barre de progression.

+0

S'il vous plaît ne pas utiliser le 'ticks' pour formater chaque ligne. Juste l'intention du code avec 4 espaces et il formate correctement. – WarrenFaith

+0

Votre code semble être correct.Il semble être une erreur sur votre mise en page, souhaitez-vous l'afficher? – PedroPedro0325

Répondre

1

Je fais exactement cela. J'ai enveloppé la barre de progression dans une méthode sur l'activité/fragment appelant, pas l'adaptateur lui-même. Quelque chose comme:

public void startProgressBar() { 
    dialog = new ProgressDialog(this); 
    dialog.setIndeterminate(true); 
    dialog.setCancelable(false); 
    dialog.setMessage("MEssgae"); 
    dialog.show(); 
} 

Dialog est un membre de classe. Maintenant, quand j'appelle volley, mon prochain appel est startProgressBar - et j'annule le dialogue onReponse et onError.

il devient

doVolleyCommand(URL); 
startProgressBar(); 

dans mes gestionnaires de réponse:

if (dialog != null && dialog.isShowing()) { 
    dialog.dismiss(); 
} 
+0

Désolé je suis un francophone donc je voudrais plus d'explications. qu'est-ce que signifie Dialog est un menber de classe, devrais-je créer une classe juste pour le ProgressBar? – mouhcine

+0

Donc, dans mon activité, je déclare une boîte de dialogue privée; De cette façon, je peux facilement le référencer sans la finale etc. dans la réponse respone/error. En le faisant dans l'adaptateur lui-même, je suppose que vous attachez la barre de progression à la mauvaise vue. Vous voulez vraiment le faire dans l'activité/le fragment contenant. Je ne peux pas dire lequel de votre code. – akameswaran

+0

en fait, j'ai un Gridview et je voudrais afficher la barre de progression dans chaque vue lors du téléchargement. J'ai été attentif (je l'espère) en vérifiant que je n'attachais pas le PB à la mauvaise vue – mouhcine

Questions connexes