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

Posted

技术标签:

【中文标题】如何在 Android Studio 的 datasnapshot/recyclerview 中创建条件?【英文标题】:How to create condition inside the datasnapshot/recyclerview in Android Studio? 【发布时间】: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);
        
    );

【问题讨论】:

【参考方案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 的代码的确切位置。

以上是关于如何在 Android Studio 的 datasnapshot/recyclerview 中创建条件?的主要内容,如果未能解决你的问题,请参考以下文章

android studio中如何引入.so库

如何在Android Studio中包含* .so库?

Android studio从相册里面选图片无法选中

Android-Android studio中关于模拟器的/data目录不能显示的解决办法

如何解决Android studio生成javadoc文件乱码

android studio怎样运行打包后的apk