首页 > 解决方案 > 我无法列出已添加到购物车的食物

问题描述

我可以添加食物、订单地址和电话号码信息,并在 Firebase 的请求/ID 下查看所有这些信息。但是,当我单击主菜单中的导航抽屉以及订单和购物车按钮时,我无法列出已添加到购物车中的食物。查询部分似乎有问题。请帮我做什么

订单状态.java

public class OrderStatus extends AppCompatActivity {

RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
FirebaseDatabase database;
DatabaseReference requests;
FirebaseRecyclerAdapter<Request, OrderViewHolder> adapter;


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

    //firebase
    database = FirebaseDatabase.getInstance();
    requests = database.getReference("Request");

    recyclerView = findViewById(R.id.listOrders);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    loadOrders(user.getEmail().toString());
}

private void loadOrders(String email) {
    Query query = FirebaseDatabase.getInstance()
            .getReference("Request")
            .orderByChild("email")
            .startAt(email.toString()).equalTo(true,email)
            .limitToLast(50);

    FirebaseRecyclerOptions<Request> options = new FirebaseRecyclerOptions.Builder<Request>().setQuery(query, Request.class).build();
    adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(options) {
        @NonNull
        @Override
        public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.order_layout, parent, false);
            return new OrderViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull OrderViewHolder viewHolder, int position, @NonNull Request model) {
            viewHolder.txtOrderID.setText(adapter.getRef(position).getKey());
            viewHolder.txtOrderStatus.setText(convertCarttoStatus(model.getStatus()));
            viewHolder.txtOrderAddress.setText(model.getAddress());
            viewHolder.txtOrderPhone.setText(model.getPhone());
        }
    };
    recyclerView.setAdapter(adapter);
}

private String convertCarttoStatus(String status) {
    if (status == "0")
        return "PLaced";
    else if (status == "1")
        return "On My Way";
    else
        return "Shipped";
}

标签: firebasefirebase-realtime-databaseandroid-recyclerview

解决方案


这行得通。如果你需要,你可以使用

public class OrderStatus extends AppCompatActivity {

    RecyclerView recyclerView;
    RecyclerView.LayoutManager layoutManager;
    FirebaseDatabase database;
    DatabaseReference requests;
    FirebaseRecyclerAdapter<Request, OrderViewHolder> adapter;


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

        //firebase
        database = FirebaseDatabase.getInstance();
        requests = database.getReference("Request");

        recyclerView = findViewById(R.id.listOrders);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        phoneNumber = getIntent().getStringExtra("phoneNumber");
        loadOrders(phoneNumber);
    }

    private void loadOrders(String email) {
        Query query = FirebaseDatabase.getInstance()
                .getReference("Request")
                .limitToLast(50);

        FirebaseRecyclerOptions<Request> options = new FirebaseRecyclerOptions.Builder<Request>().setQuery(query, Request.class).build();
        adapter = new FirebaseRecyclerAdapter<Request, OrderViewHolder>(options) {
            @NonNull
            @Override
            public OrderViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.order_layout, parent, false);
                return new OrderViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull OrderViewHolder viewHolder, int position, @NonNull Request model) {
                viewHolder.txtOrderID.setText(adapter.getRef(position).getKey());
                viewHolder.txtOrderStatus.setText(convertCarttoStatus(model.getStatus()));
                viewHolder.txtOrderAddress.setText(model.getAddress());
                viewHolder.txtOrderPhone.setText(model.getPhone());
            }
        };
        recyclerView.setAdapter(adapter);
    }

    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }
    private String convertCarttoStatus(String status) {
        if (status == "0")
            return "PLaced";
        else if (status == "1")
            return "On My Way";
        else
            return "Shipped";
    }

推荐阅读