1

, wenn ich versuche progressdialog in recyclerview Adapter verwenden i Ausnahmemeldung habe:ProgressDialog in RecyclerView Adapter Ausgabe

Unable to add window -- token null is not for an application 

ich weiß, dass alles mit gebrauchtem Kontext ok ist, weil Glide paar Zeilen unter ProgressBar den gleichen Kontext verwenden. Irgendeine Idee, was das Problem ist? Meine Adapterklasse:

import android.app.ProgressDialog; 
import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

import com.bumptech.glide.Glide; 
import com.bumptech.glide.load.resource.drawable.GlideDrawable; 
import com.bumptech.glide.request.RequestListener; 
import com.bumptech.glide.request.target.Target; 

import java.util.List; 



public class ShopsAdapter extends RecyclerView.Adapter<ShopsAdapter.MyViewHolder> { 

    Context mContext; 
    List<String> shopsList; 
    ProgressDialog progressDialog; 

    public class MyViewHolder extends RecyclerView.ViewHolder { 
     public ImageView thumbnail; 

     public MyViewHolder(View view) { 
      super(view); 
      thumbnail = (ImageView) view.findViewById(R.id.thumbnail); 

     } 
    } 

    public ShopsAdapter(Context mContext, List<String> shopsList) { 
     this.mContext = mContext; 
     this.shopsList = shopsList; 
    } 


    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.shop_card,parent,false); 

     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     progressDialog = new ProgressDialog(mContext); 

     shopsList.get(position); 
     try{ 
      progressDialog.show(); 
      String stringformat = String.format(".../%s.png", shopsList.get(position)); 
      Glide.with(mContext).load(stringformat).listener(new RequestListener<String, GlideDrawable>() { 
       @Override 
       public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
        return false; 
       } 

       @Override 
       public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
        //progressDialog.setVisibility(View.GONE); 
        return false; 
       } 
      }).centerCrop().fitCenter().into(holder.thumbnail); 
     }catch (Exception e){ 
      Log.d("Dsdfs", e.getMessage()); 
      Glide.with(mContext).load("http://...Zabka.png").centerCrop().fitCenter().into(holder.thumbnail); 
     } 



    } 

    @Override 
    public int getItemCount() { 
     return shopsList.size(); 
    } 
} 
+0

ad ur adapter calling code – jagapathi

+0

adapter = neuer ShopsAdapter (getApplicationContext(), shopsNames); –

Antwort

1

ändern

adapter = new ShopsAdapter (getApplicationContext(), shopsNames);

TO

adapter = new ShopsAdapter (this, shopsNames);

+0

ich kann nicht, weil Adapter in AsyncTask-Klasse –

+0

Aufruf ist, wenn dies nicht funktioniert CLASS_NAME.this class_name ist Ihr Name der Aktivität – jagapathi

+0

adapter = neue ShopsAdapter (classname.this, shopsNames); – jagapathi

Verwandte Themen