如何从Firebase到TextView检索布尔值?

时间:2019-09-15 13:56:10

标签: java android firebase firebase-realtime-database

我正在制作一个购物应用程序,如果用户需要更快地订购它,则必须订阅“快速交付”选项。当用户在“快速交付”复选框中打勾时,布尔值将被上传到Firebase实时数据库-> database

我想查看用户是否已从管理面板订阅了“快速交付”选项。我将所有订单信息检索到管理面板中的RecyclerView。当管理员从管理面板中查看订单详细信息时,我想将TextView设置为“快速交付:开/关”。

这是我尝试过的:

@Override
protected void onStart()
{
    super.onStart();

    ordersRef = FirebaseDatabase.getInstance().getReference().child("Orders");

    FirebaseRecyclerOptions<AdminOrders> options =
            new FirebaseRecyclerOptions.Builder<AdminOrders>()
            .setQuery(ordersRef, AdminOrders.class)
            .build();

    FirebaseRecyclerAdapter<AdminOrders, AdminOrdersViewHolder> adapter =
            new FirebaseRecyclerAdapter<AdminOrders, AdminOrdersViewHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull final AdminOrdersViewHolder holder, final int position, final @NonNull AdminOrders model)
                {
                    holder.userName.setText("Name: "+ model.getName());
                    holder.userPhoneNumber.setText("Phone Number: : "+ model.getPhone());
                    holder.userTotalPrice.setText("Total Amount: $"+ model.getTotalAmount());
                    holder.userDateTime.setText("Order Time: "+ model.getDate() + model.getTime());
                    holder.userShippingAddress.setText("Shipping Address: "+ model.getAddress() + "," + model.getCity());
                    holder.showOrdersBtn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v)
                        {
                            String uID = getRef(position).getKey();
                            Intent intent = new Intent(AdminNewOrdersActivity.this, AdminUserProductsActivity.class);
                            intent.putExtra("uid", uID);
                            startActivity(intent);
                        }
                    });


                    ordersRef.child(userID).child("fast_delivery").addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            TextView switch1 = (TextView) findViewById(R.id.switch1);
                            switch1.setText(String.valueOf(this));
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });
                }

我收到此错误

  

java.lang.NullPointerException:无法为child()中的参数'pathString'传递null

2 个答案:

答案 0 :(得分:2)

您有一个NullPointerException指示userID未初始化,因此出现此错误:

  

不能为child()中的参数'pathString'传递null

要解决此问题,请添加以下代码行:

String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();

正前方:

ordersRef.child(userID).child("fast_delivery").addValueEventListener(/* ... */);

答案 1 :(得分:0)

我想我是否正确..您已经为要获取订单的订单创建了单独的树

创建模型类为孩子提供相同的名字,在其中您获得布尔值 fast_delivery 的布尔值,请使用该布尔值将其转换为字符串,然后比较该值如果 String.valueof(boolean)is =“ true” ,则使用关闭

打印到textview或反之亦然