mouhcine
mouhcine

Reputation: 129

Display a Progress bar in a custom adapter while downloading with volley

I would like to display an progressBar in my custom adapter while downloading!

There is My Adapter Class

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 with Observer (GaleryImageView) it based on this StackOverFlow answer. I'm unable to display the progress bar.

Upvotes: 0

Views: 2133

Answers (1)

akameswaran
akameswaran

Reputation: 98

I am doing exactly this. I wrapped the progress bar in a method on the calling Activity/Fragment, not the adapter itself. Something like:

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

Dialog is a class member.

Now when I call volley, my next call is to startProgressBar - and I cancel dialog onReponse and onError.

so it becomes

doVolleyCommand(URL);
startProgressBar();

in my response handlers:

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

Upvotes: 2

Related Questions