【问题标题】:Recyclerview not showing data from FirebaseRecyclerview 不显示来自 Firebase 的数据
【发布时间】:2019-12-01 14:42:08
【问题描述】:

我的应用程序一直出现空白屏幕,但没有错误,而且我的 Firebase 包含数据。看起来它没有正确检索。我已经检查了其他类似问题的答案,尝试了解决方案,但我仍然找不到我的问题的解决方案。请帮助我对此有点陌生。

这是我的 OrderStatus 类

public class OrderStatus extends AppCompatActivity {
    public RecyclerView recyclerView;
    public RecyclerView.LayoutManager layoutManager;

    FirebaseDatabase database;
    DatabaseReference requests;
    FirebaseRecyclerAdapter<DeliveryRequest, OrderViewHolder> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order_status);

        database = FirebaseDatabase.getInstance();
        requests = database.getReference("OrderRequests");

        recyclerView = (RecyclerView)findViewById(R.id.listOrders);


        //ADAPTER
        loadOrders();
    }

    private void loadOrders() {
        FirebaseRecyclerOptions<DeliveryRequest> options =
                new FirebaseRecyclerOptions.Builder<DeliveryRequest>()
                        .setQuery(requests, new SnapshotParser<DeliveryRequest>() {
                            @NonNull
                            @Override
                            public DeliveryRequest parseSnapshot(@NonNull DataSnapshot snapshot) {
                                return null;
                            }
                        })
                        .build();


          adapter = new FirebaseRecyclerAdapter<DeliveryRequest, OrderViewHolder>(options) {
            @Override
            public OrderViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                // Create a new instance of the ViewHolder, in this case we are using a custom
                // layout called R.layout.message for each item
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.order_layout, parent, false);

                return new OrderViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(OrderViewHolder holder, int position, DeliveryRequest model) {
                // Bind the Chat object to the ChatHolder
                // ...

                holder.txtOrderPhone.setText(model.getPhone());
                holder.txtOrderAddress.setText(model.getAddress());
                holder.txtOrderStatus.setText(convertCodeToStatus(model.getStatus()));
                holder.txtOrderId.setText(adapter.getRef(position).getKey());
            }
        };
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);
        adapter.startListening();
    }

    private String convertCodeToStatus(String status){
        if (status.equals("0"))
            return "placed";

        else if (status.equals("1"))
            return "on my way";
        else
            return "Shipped";
    }
}

我的字符串类

public class DeliveryRequest   {
    public String   firstName, lastName,address, phone,total, status;
    public List<ProposalDetails> proposalDetails;

    public DeliveryRequest() {
    }

    public DeliveryRequest(String firstName,String lastName, String address,String phone,String total,String status, List<ProposalDetails> proposalDetails){
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
        this.phone = phone;
        this.proposalDetails = proposalDetails;
        this.status = "0";
        this.total= total;

    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public List<ProposalDetails> getProposalDetails() {
        return proposalDetails;
    }

    public void setProposalDetails(List<ProposalDetails> proposalDetails) {
        this.proposalDetails = proposalDetails;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getTotal() {
        return total;
    }

    public void setTotal(String total) {
        this.total = total;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

【问题讨论】:

    标签: android firebase-realtime-database android-recyclerview firebaseui


    【解决方案1】:

    您是由return null 实现的parseSnapshot,这意味着来自您的数据库的任何DataSnapshot 都将转换为null

    您可能正在寻找类似的东西:

    public DeliveryRequest parseSnapshot(@NonNull DataSnapshot snapshot) {
        return snapshot.getValue(DeliveryRequest.class);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 2018-08-30
      • 2020-06-25
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2021-08-28
      相关资源
      最近更新 更多