【问题标题】:How to create condition inside the datasnapshot/recyclerview in Android Studio?如何在 Android Studio 的 datasnapshot/recyclerview 中创建条件?
【发布时间】:2020-05-05 20:47:47
【问题描述】:

我为我的项目创建了选项卡式活动。我有三个标签,分别是已付、未付和已发布项目 我想根据状态对它们中的每一个进行分类。我已经创建了编码,但我不确定如何在我的编码中实现该方法。我只想要具有“PAID”的订单,因为它们的状态将显示在我的 PaidFrag 中。

付费片段:

databaseReference = FirebaseDatabase.getInstance().getReference("Order");

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            orderList = new ArrayList<>();
            for (DataSnapshot orderSnapshot : dataSnapshot.getChildren()) {
                for (DataSnapshot ds : orderSnapshot.getChildren()) {
                    Order order = ds.getValue(Order.class);
                    if (order.getStatus().equals("UNPAID")) ;
                    orderList.add(ds.getValue(Order.class));

                }
            }

            psOrderAdapter PsOrderAdapter = new psOrderAdapter(orderList);
            recyclerView.setAdapter(PsOrderAdapter);
        }
    }


public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {

    myViewHolder.name.setText("Name : " + orderList.get(i).getName());
    myViewHolder.status.setText("Status : " + orderList.get(i).getStatus());
    myViewHolder.total.setText("Total Price : RM " + orderList.get(i).getTotal());
    myViewHolder.address.setText("Address : " + orderList.get(i).getAddress());
    myViewHolder.dateTime.setText("Order ID  :" + orderList.get(i).getOrder_id());

    myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String cust_id = orderList.get(i).getCust_id();
            String oid = orderList.get(i).getOrder_id();
            String status = orderList.get(i).getStatus();
            String courier = orderList.get(i).getCourier();
            String track = orderList.get(i).getTrackingNum();
            String num = orderList.get(i).getPhone();

            Intent intent = new Intent(context, updateStatus.class);
            intent.putExtra("cust_id",cust_id);
            intent.putExtra("order_id",oid);
            intent.putExtra("status",status);
            intent.putExtra("courier", courier);
            intent.putExtra("trackingNum",track);
            intent.putExtra("phone",num);
            context.startActivity(intent);
        }
    });

【问题讨论】:

    标签: java android database firebase-realtime-database


    【解决方案1】:

    听起来您正在寻找 Firebase 数据库查询,它限制了从数据库返回的节点:

    databaseReference = FirebaseDatabase.getInstance().getReference("Order");
    Query query = databaseReference.orderByChild("status").equalTo("PAID");
    query.addValueEventListener(new ValueEventListener() {
      ...
    

    您需要确保 statusPAID 字符串与数据库中的键和值完全匹配。

    有关这方面的更多信息,请参阅 ordering and filtering data 上的 Firebase 文档。

    【讨论】:

    • 您现在拥有创建databaseReference 并在其上调用addValueEventListener 的代码的确切位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2016-03-18
    相关资源
    最近更新 更多