java - 如何为项目名称和项目计数编写正确的类 Android Firebase

标签 java android firebase firebase-realtime-database

我正在尝试提取库存数据并最终使用数组适配器将其显示在 ListView 上。基本上我需要将每个项目对象添加到列表中,然后使用 itemobject.getName() 我需要访问项目名称。

Users 
        UserID
                inventory
                      0
                        name:coffee
                        count:1
                      1
                        name:testitem
                        count:2

项目类别:

public class Item {

    private String name;
    private int count;
    public Item(){

    }
    public String getName(){
        return name;
    }
    public int getCount(){
        return count;
    }
}

这就是我获取数据的方式:

inventoryview.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    mydb.child("users").child(uid).child("inventory").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            String data = dataSnapshot.getValue().toString();
                            Log.d("asd",data);
                            Item item = dataSnapshot.getValue(Item.class);
//iterate through incoming data and add item objects to list
         Log.d("itemname",item.getName());

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });

                    Toast.makeText(getActivity(),
                            "Inventory clicked.",
                            Toast.LENGTH_LONG).show();
                }
            });

最佳答案

您的 onDataChange 中缺少循环:

mydb.child("users").child(uid).child("inventory").addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
      Log.d("itemname", childSnapshot.getChild("name").getValue());
      Item item = childSnapshot.getValue(Item.class);
      Log.d("itemname",item.getName());
    }
  }
  @Override
  public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException(); // don't ignore errors
  }
}

如果第一个日志语句打印正确的值,而第二个日志语句没有打印正确的值,则表明 Java 类和 JSON 结构之间不匹配。

关于java - 如何为项目名称和项目计数编写正确的类 Android Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022373/

相关文章:

java - 这是相同还是不同的 pageContext 范围和 JSP 页面中的一些隐式对象?

java - 如何从已弃用的 Date 类型替换 getDate()?

java - 当二维数组没有剩余特定元素时退出程序

android - 以编程方式在 Android 中创建样式而不引用资源

javascript - 向创建的对象添加属性(Firebase 函数)

java - 如何在 WebSphere Liberty 中设置方法级别事务超时?

android - 是否可以将通知从抬头移动到状态栏?

android - 为什么当我触摸 ImageView 时,应用于 ImageView 的状态列表可绘制对象不使用按下状态的可绘制对象?

javascript - 从 Firebase childs 读取变量

android - 如何在 Cloud Firestore 中使用文档 ID 执行集合组查询