写信给Firebaseon回收器适配器

发布于 2025-02-10 15:01:12 字数 2364 浏览 0 评论 0原文

我有一个由Firebase数据库填充的回收器视图。在item.xml上,我有一个按钮以及数据。单击每个项目的按钮时,我想将供应商名称保存在我的数据库中。获取错误:NullPointer异常,因为我的课程供应商保持为空。是什么原因造成的?

代码

public class recyclerAdapter extends RecyclerView.Adapter<recyclerAdapter.MyViewHolder> {
    Context context;

    ArrayList<supplierClass> list;


    public recyclerAdapter(Context context, ArrayList<supplierClass> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
        return  new MyViewHolder(v);
    }

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

        supplierClass sc = list.get(position);
        holder.sName.setText(sc.getsName());
        holder.materialName.setText(sc.getMaterialName());
        holder.CATEGORY.setText(sc.getCATEGORY());


    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder{

        TextView sName,materialName,CATEGORY;
        Button btnSelect;
        DatabaseReference ref;
        FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            sName = itemView.findViewById(R.id.lblSupplierName);
            materialName = itemView.findViewById(R.id.lblMaterial);
            CATEGORY = itemView.findViewById(R.id.lblLocation);
            btnSelect=itemView.findViewById(R.id.btnSelect);
            supplierClass sc=new supplierClass();
            String id=user.getUid();
            btnSelect.setOnClickListener(v -> {
               
                ref= FirebaseDatabase.getInstance().getReference("dashboard");
                ref.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        ref.child(id).setValue(sc.getsName());
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {

                    }
                });


            });

        }
    }

I have a recycler view that is being populated by firebase database. On the item.xml I have a button alongside data. On clicking the button on each item, I want to save supplier name in my database. Get error: nullpointer exception as my class Suppliers remains null. What is causing it?

Code

public class recyclerAdapter extends RecyclerView.Adapter<recyclerAdapter.MyViewHolder> {
    Context context;

    ArrayList<supplierClass> list;


    public recyclerAdapter(Context context, ArrayList<supplierClass> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
        return  new MyViewHolder(v);
    }

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

        supplierClass sc = list.get(position);
        holder.sName.setText(sc.getsName());
        holder.materialName.setText(sc.getMaterialName());
        holder.CATEGORY.setText(sc.getCATEGORY());


    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder{

        TextView sName,materialName,CATEGORY;
        Button btnSelect;
        DatabaseReference ref;
        FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            sName = itemView.findViewById(R.id.lblSupplierName);
            materialName = itemView.findViewById(R.id.lblMaterial);
            CATEGORY = itemView.findViewById(R.id.lblLocation);
            btnSelect=itemView.findViewById(R.id.btnSelect);
            supplierClass sc=new supplierClass();
            String id=user.getUid();
            btnSelect.setOnClickListener(v -> {
               
                ref= FirebaseDatabase.getInstance().getReference("dashboard");
                ref.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        ref.child(id).setValue(sc.getsName());
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {

                    }
                });


            });

        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文