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

时间:2018-04-25 12:28:01

标签: java android firebase firebase-realtime-database

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

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();
                }
            });

4 个答案:

答案 0 :(得分:1)

您错过了indexOf(el)中的循环:

onDataChange

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

答案 1 :(得分:0)

这是模型类的正确显示方式:

public class Item {
    private String name;
    private int count;

    public Item() {}

    public Item(String name, int count) {
        this.name = name;
        this.count = count;
    }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getCount() { return count; }
    public void setCount(int count) { this.count = count; }
}

它包含公共无参数构造函数和相应的公共setter和getter。

要创建Item类的项目,只需创建一个新对象并将其传递给setValue()方法,如下所示:

Item item = new Item("Name", 1);
yourRef.setValue(item);

答案 2 :(得分:0)

更改此

并且我希望您根据项目POJO类插入数据,如果不同则不会获取数据。

mydb.child("Users").child("UserID").child("inventory")

答案 3 :(得分:0)

假设您的结构如下:

Root
  |___Item1
  |      |___name : "name1"
  |      |___count: "count1"
  |
  |___Item2
  |      |___name : "name2"
  |      |___count: "count2"
  |___Item3
  |      |___name : "name3"
  |      |___count: "count3"

我要向Root添加一个监听器并调用dataSnapshot.getChildren()并使用for-each循环迭代子进程。现在,对于每个孩子,我可以致电data.getValue(Item.class)并完成它。