java - 如何在 Android Studio 中的 datasnapshot/recyclerview 内创建条件?

标签 java android database firebase-realtime-database

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

付费 fragment :

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);
        }
    });

最佳答案

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

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

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

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

关于java - 如何在 Android Studio 中的 datasnapshot/recyclerview 内创建条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59813188/

相关文章:

android - 通过xmpp在android中传输文件?

sql - COUNT 查询的意外结果

database - 如何在 Amazon RDS (Oracle) 中制作模式副本?

java - 在使用 Camel 的同时如何使用 Spring 加载属性?

Android ItemTouchHelper.SimpleCallback 获取滑动方向

java - akka.io 调度程序配置异常

具有多种构建类型的 Android 多种风格

PHP MySQL 插入由于某种原因无法工作

java - 从 JDialog 返回时出现意外结果

java - Eclipse 内存不足且运行缓慢