Kousayla
Kousayla

Reputation: 53

Problem loading glide inside RecyclerView-android

i'm using recyclerview to show a list of members, there task and there profile picture but whenever i go to another fragment and get back to it quickly i get

You cannont start a load for destroyed activity com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed(RequestManagerRetriever.java:317)

and here is my adapter code

public class MembersAdapter extends FirestorePagingAdapter<MembersModel, MembersAdapter.MembersViewHolder> {
    public MembersAdapter(FirestorePagingOptions<MembersModel> options) {
        super(options);}

    @Override
    protected void onBindViewHolder(@NonNull MembersViewHolder holder, int position, @NonNull MembersModel membersModel) {
        holder.tvmembername.setText(membersModel.getName());

        holder.tvtask.setText(membersModel.getTask());

        String imgPath = "images/"+membersModel.getUid()+".jpeg";
        StorageReference storageRef = FirebaseStorage.getInstance().getReference();
        StorageReference imageRef = storageRef.child(imgPath);
        Glide.with(holder.VmemBpic.getContext())
                .load(imageRef)
                .circleCrop()
                .format(DecodeFormat.PREFER_RGB_565)
                .placeholder(R.drawable.ic_user)
                .into(holder.VmemBpic);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AppCompatActivity activity = (AppCompatActivity) v.getContext();
                activity.getSupportFragmentManager().beginTransaction()
                        .replace(R.id.fragment_container, new UserFragment(membersModel.getName(), membersModel.getTask(), membersModel.getPurl(), membersModel.getDesc(), membersModel.getLinkedinurl(), membersModel.getInstagramurl(), membersModel.getGithuburl(), membersModel.getEmail(), membersModel.getUid()))
                        .addToBackStack("user").commit();
            }
        });
    }

    @Override
    protected void onLoadingStateChanged(@NonNull LoadingState state) {
        super.onLoadingStateChanged(state);
        switch (state){
            case LOADED:
                break;
            case ERROR:
                break;
            case FINISHED:
                break;
            case LOADING_MORE:
                break;
            case LOADING_INITIAL:
                break;
        }
    }

    @NonNull
    @Override
    public MembersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_member, parent, false);
        return new MembersViewHolder(view);
    }

    public class MembersViewHolder extends RecyclerView.ViewHolder{
        private TextView tvmembername,tvtask;
        private ImageView VmemBpic;
        public MembersViewHolder(@NonNull View itemView) {
            super(itemView);
            tvmembername = itemView.findViewById(R.id.xtvmembername);
            tvtask = itemView.findViewById(R.id.xtvtask);
            VmemBpic = itemView.findViewById(R.id.xmemBpic);

        }
    }
}

Upvotes: 0

Views: 604

Answers (1)

Sam Chen
Sam Chen

Reputation: 8897

Use getApplicationContext() in Glide.with(YOUR_CONTEXT_HERE) or you can pass the Context object through your Adapter constructor.

Upvotes: 1

Related Questions