片段RecyclerView上的滑行问题

问题描述 投票:0回答:1

我有此错误,您无法在尚未附加的View或Fragment上启动加载,而其中getActivity()返回null(通常在附加Fragment之前或销毁Fragment之后调用getActivity()时会发生这种情况)。能帮我吗,我不知道该怎么办,仅当我使用滑行时才会出现问题,但我需要在ImageView上放置图像,所以我不知道该怎么办,我是新手

这是片段

public class ingredintes_frag extends Fragment {
    FragmentActivity context = getActivity();
    ArrayList<modeloIngredientes> arrayListIngredientes = new ArrayList<>();
        AdaptadorIngredientes adaptadorIngredientes;

    @Override
    public void onAttach(@NonNull Context contexto) {
        super.onAttach(contexto);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_ingredintes_frag, container, false);


        final RecyclerView recyclerView =view.findViewById(R.id.rv_ingredientes);
        recyclerView.setLayoutManager(new LinearLayoutManager(context));
        FirebaseFirestore db = FirebaseFirestore.getInstance();
        CollectionReference reference = db.collection("ingredientes");


        reference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
              for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots)
              {
                  arrayListIngredientes.add(documentSnapshot.toObject(modeloIngredientes.class));
              }
            }
        }).addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    adaptadorIngredientes = new AdaptadorIngredientes(arrayListIngredientes,context);
                recyclerView.setAdapter(adaptadorIngredientes);
            }
        });

        return view;
    }



}

及其适配器类

public class AdaptadorIngredientes extends RecyclerView.Adapter<AdaptadorIngredientes.ViewHolder>  {
ArrayList<modeloIngredientes> ingredientes;
Context context;

   public AdaptadorIngredientes(ArrayList<modeloIngredientes> arrayListIngredientes, Context context) {
       this.context =context;
       this.ingredientes = arrayListIngredientes;



   }


   @NonNull
   @Override
   public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
       View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_row_ingre,null,false);

       context = parent.getContext();
       return new ViewHolder(view);

   }

   @Override
   public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

           holder.txvnombre.setText(ingredientes.get(position).getNomIngre());
           holder.txvdesc.setText(ingredientes.get(position).getDesIngre());
          Glide
                   .with(context)
                   .load(ingredientes.get(position).getImgIngre())
                   .listener(new RequestListener<Drawable>() {
                       @Override
                       public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                           holder.mProgressBar1.setVisibility(View.GONE);
                           holder.imageView.setVisibility(View.VISIBLE);
                           holder.imageView.setImageResource(R.drawable.cheficon);
                           return false;
                       }

                       @Override
                       public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                           holder.mProgressBar1.setVisibility(View.GONE);
                           holder.imageView.setVisibility(View.VISIBLE);
                           return false;
                       }
                   }).override(180,143).centerCrop()
                   .into(holder.imageView);
   }

   @Override
   public int getItemCount() {
       return ingredientes.size();
   }

   public class ViewHolder extends  RecyclerView.ViewHolder{
       TextView txvnombre,txvdesc;
       ImageView imageView;
       ProgressBar mProgressBar1;
       public ViewHolder(@NonNull View itemView) {
           super(itemView);
           txvnombre = itemView.findViewById(R.id.txtingrediente);
           txvdesc = itemView.findViewById(R.id.txtdes);


       }
   }
}



android android-fragments navigation-drawer android-context glide
1个回答
0
投票

也许您没有以正确的方式获得上下文。你可以试试吗:

https://stackoverflow.com/a/53824378/8122654

© www.soinside.com 2019 - 2024. All rights reserved.