我正在制作一个购物应用程序,如果用户需要更快地订购它,则必须订阅“快速交付”选项。当用户在“快速交付”复选框中打勾时,布尔值将被上传到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
答案 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或反之亦然