简体   繁体   English

FireBase Recycler Adapter 未从 FireBase 检索数据

[英]FireBase Recycler Adapter doesn't retrieve data from FireBase

My database looks like this我的数据库看起来像这样在此处输入图像描述

I'm trying to fetch all this data from that USER ID inside Cart.我正在尝试从购物车中的该用户 ID 获取所有这些数据。 But my RecyclerView shows nothing.但我的RecyclerView什么也没显示。 After checking, the adapter.getItemCount() returns 0. Where did I wrong?检查后, adapter.getItemCount()返回 0。我哪里错了? This is my code:这是我的代码:

onStart()开始()

private void loadData(){
        auth = FirebaseAuth.getInstance().getCurrentUser();
        userID = auth.getUid();
        final DatabaseReference cartList = FirebaseDatabase.getInstance().getReference().child("Cart");
        FirebaseRecyclerOptions<Cart> options =
                new FirebaseRecyclerOptions.Builder<Cart>()
                .setQuery(cartList.child(userID),Cart.class).build();
        FirebaseRecyclerAdapter<Cart,CartHolder> adapter
                = new FirebaseRecyclerAdapter<Cart, CartHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull CartHolder holder, int position, @NonNull Cart model) {
                holder.txtGia.setText(model.getTotal());
            }

            @NonNull
            @Override
            public CartHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cart_item,parent,false);
                CartHolder holder = new CartHolder(view);
                return holder;
            }
        };
        recyclerView.setAdapter(adapter);
        adapter.startListening();
    }

Model Model

    public class Cart {
        public String pID,num,time,addr,total,userID;
        public Cart(){}
    
        public Cart(String num,String pID,String time,String addr,String total,String userID) {
            this.num = num;
            this.pID = pID;
            this.time = time;
            this.addr = addr;
            this.total = total;
            this.userID = userID;
        }
    
        public String getNum() {
            return num;
        }
    
        public String getpID() {
            return pID;
        }
    
        public String getTime() {
            return time;
        }
    
        public String getAddr() {
            return addr;
        }
    
        public String getTotal() {
            return total;
        }
    
        public String getUserID() {
            return userID;
        }
    }

and ViewHolderViewHolder

public class CartHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public ImageView shibaImg;
    public TextView txtTen,txtMota,txtGia,txtThoigian;
    ItemClickListener listener;

    public CartHolder(@NonNull View itemView) {
        super(itemView);
        shibaImg = (ImageView) itemView.findViewById(R.id.cart_item_img);
        txtTen = (TextView) itemView.findViewById(R.id.cart_item_ten);
        txtMota = (TextView) itemView.findViewById(R.id.cart_item_mota);
        txtGia = (TextView) itemView.findViewById(R.id.cart_item_gia);
        txtThoigian = (TextView) itemView.findViewById(R.id.cart_item_history);

    }
    public void setItemClickListener(ItemClickListener listener){
        this.listener = listener;
    }

    @Override
    public void onClick(View v) {
        listener.onClick(v, getAdapterPosition(),false);
    }
}

This code seems to be the problem:这段代码似乎是问题所在:

cartList.orderByChild("userID").equalTo(userID)

This code takes every child nodes directly under cartList and orders them on their userID property.此代码将每个子节点直接放在cartList下,并根据它们的userID属性对它们进行排序。 But there is no userID property in your screenshot, so this results in an empty list.但是您的屏幕截图中没有userID属性,因此这会导致一个空列表。

My best guess is that the key of each node under cartList is the user ID, in which case you can instead use:我最好的猜测是cartList下每个节点的是用户 ID,在这种情况下,您可以改用:

cartList.child(userID)

So:所以:

final DatabaseReference cartList = FirebaseDatabase.getInstance().getReference().child("Cart");
FirebaseRecyclerOptions<Cart> options =
        new FirebaseRecyclerOptions.Builder<Cart>()
        .setQuery(cartList.child(userID),Cart.class).build();

I've finally figured it out.我终于想通了。 For some reason, RecyclerView on my CartActivity needs time to load data in (Maybe cause I have 3 RecyclerView on HomeActivity and sometimes data show up and sometimes It don't, usually 1 or 2 / 3 RecyclerViews show data).出于某种原因,我的CartActivity上的RecyclerView需要时间来加载数据(可能是因为我在HomeActivity上有 3 个RecyclerView ,有时会显示数据,有时不会,通常 1 或 2 / 3 个 RecyclerViews 显示数据)。 When I reload (press back and Start Activity again), RecyclerView will appear and show data.当我重新加载(按回并再次启动活动)时,RecyclerView 将出现并显示数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Firebase Recycler适配器不显示数据,但加载图像 - Firebase Recycler adapter doesn't show data, but load images 无法从 Firebase Recycler Adapter android java 中的模型中检索数据数组项 - Can't retrieve data array item from model in Firebase Recycler Adapter android java 如何从Firebase Realtime Database Java中的子节点检索数组数据? (Firebase回收器适配器) - How to retrieve array data from children node in Firebase Realtime Database Java? (Firebase Recycler Adapter) Firebase Recycler View适配器(从Firebase检索) - Firebase Recycler View Adapter (Retrieving from firebase) Firebase 回收器分页适配器未在数据更改时更新 - Firebase recycler paging adapter not updating on data change Firebase Recycler Adapter 未填充 - Firebase Recycler Adapter is not populated 无法从 firebase 数据库 android 中检索数据,回收站视图 - Unable to retrieve data from firebase database android, recycler view FIrebaseUI(版本 0.4.0):firebase 回收器适配器未从 firebase 数据库中获取数据 - FIrebaseUI( version 0.4.0): firebase recycler Adapter not fetching data from firebase database 如何让我的回收器适配器检索发送到 firebase 数据库的消息? - How to make my recycler adapter retrieve messages sent to firebase database? 在回收站视图中从 firebase 检索某些密钥 - Retrieve certain key from firebase in recycler view
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM