gpt4 book ai didi

java - 如何获取用户id以在android studio中执行显示列表以供管理员查看订单列表?

转载 作者:行者123 更新时间:2023-12-01 21:51:37 30 4
gpt4 key购买 nike

我想在我的管理页面中显示客户订单列表。但它给了我空白页面,logcat 内没有错误。

下面是我的数据库:

The highlighted id is the customer id and the blue line is the pro_id which is the order id of the customer. I want to view this list on my admin Order Received page

我想在订单列表中显示订单。突出显示的 id 是客户的 id。我这样调用数据库:

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

我没有收到错误,但没有得到我需要的确切输出。这是我在运行应用程序时遇到的问题。

正如我们所见,内部订单数据库确实有 3 个 id。但应用程序没有获取 id。如何调用用户 ID 将其显示在我的订单列表页面中? enter image description here

我期待的结果是它会显示已下订单的客户的 ID。从上图中,我预计客户 ID 将显示 YQg0kFIUkXW0Z909XcI0XDIdeGt206E02IpRO3RzWp2RQHfr7XVYsuo2wmzfhWTdA0U9Jh8ENnGJG6IPiNE2 而不是 abc。之所以显示abc是因为我将textview设置为abc作为提示。

相同的 ID 重复。

enter image description here


databaseReference = FirebaseDatabase.getInstance().getReference("Order");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
orderList = new ArrayList<>();

for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
for (DataSnapshot orderSnapshot : userSnapshot.getChildren()) {
orderList.add(orderSnapshot.getValue(Order.class));
}
}

psOrderAdapter PsOrderAdapter = new psOrderAdapter(orderList);
recyclerView.setAdapter(PsOrderAdapter);
// Log.d("TAG", "Number of orders: " + orderList.size());


}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ManageOrder.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});


recyclerView = findViewById(R.id.rv);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

}

订单类别

public class Order {
public String cust_id;
public String pro_id;
public String total;
public String name;
public String address;
public String phone;
public String status;


public Order() {
}

public Order(String cust_id, String pro_id, String total, String name, String address, String phone, String status) {
this.cust_id = cust_id;
this.total = total;
this.name = name;
this.address = address;
this.phone = phone;
this.pro_id = pro_id;
this.status = status;
}

public String getCust_id() {
return cust_id;
}

public void setCust_id(String cust_id) {
this.cust_id = cust_id;
}

public String getPro_id() {
return pro_id;
}

public void setPro_id(String pro_id) {
this.pro_id = pro_id;
}

public String getTotal() {
return total;
}

public void setTotal(String total) {
this.total = total;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}
}

最佳答案

您的数据结构似乎是:

Orders: {
uid1: {
orderid1: { ... },
orderid3: { ... }
},
uid2: {
orderid2: { ... },
orderid4: { ... }
}
}

因此,Orders 下有两个动态级别:一个用于 UID,另一个用于订单 ID。由于您正在监听所有 Orders 下的数据,因此您的 onDataChange 将需要为每个动态级别包含一个单独的循环。

现在您有一个循环,这意味着您的 ds 引用用户的数据,而您随后尝试从中读取订单。以后请使用更好的变量名称,因为它可以帮助您更轻松地发现此类问题。

正确的方法是首先循环用户,然后在循环内循环该用户的订单。

类似于:

databaseReference = FirebaseDatabase.getInstance().getReference("Order");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
orderList = new ArrayList<>();

for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
for (DataSnapshot orderSnapshot : userSnapshot.getChildren()) {
orderList.add(orderSnapshot.getValue(Order.class));
}
}

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

关于java - 如何获取用户id以在android studio中执行显示列表以供管理员查看订单列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760938/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com