【问题标题】:Retrieve data Firebase from DateTime node从 DateTime 节点检索数据 Firebase
【发布时间】:2017-11-30 12:27:05
【问题描述】:

我想从Firebase 检索数据,但我的问题是节点之一是每天的日期,我不知道如何进入其中。

这是我的JSON

{
"jsonData": {
    "11-30-2017": {
      "Clau": {
        "-L-BmanPPTqqXxOivGZs": [
          {
            "cantitate": "18",
            "pret": "140",
            "produs": "Camasa",
            "produsId": "-L-BjnaA-Uizg9mI7J3l",
            "qty": 2,
            "subTotal": 280
          }
        ]
      }
    }
  }
}

我想获取jsonData 内的对象(cantitate、pret、produsID 等)。我不知道怎么进去,这就是我所尝试的。

mDatabaseReference = FirebaseDatabase.getInstance().getReference("jsonData")

我不知道下一步该做什么。

【问题讨论】:

  • 问题解决了吗?
  • 不,不可能,太难了

标签: java android firebase firebase-realtime-database


【解决方案1】:
mDatabaseReference = FirebaseDatabase.getInstance().getReference("jsonData").child("11-30-2017").child("Clau").child("-L-BmanPPTqqXxOivGZs");  
mDatabaseReference .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                Log.wtf(TAG, "onDataChange:Daylog "+dataSnapshot.toString() );
                //your data


            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                  //error code
            }

        });

【讨论】:

  • 我试过了,不工作我每天都想要一些功能性的东西
【解决方案2】:

Firebase API 仅允许您使用其 orderByChildequalTo 方法过滤一级深度(或 with a known path)的子级。

您通读了this 文档以了解其工作原理。

【讨论】:

    【解决方案3】:

    您需要创建 dao 类来轻松管理数据。

    @IgnoreExtraProperties
    public class Datas {
        public String cantitate;
        public String pret;
        public String produs;
        public String produsId;
        public String qty;
    
        public Datas() {}
        public Datas(String cantitate, String pret, String produs, String produsId, String qty, String subTotal) {
            this.cantitate = cantitate;
            this.pret = pret;
            this.produs = produs;
            this.produsId = produsId;
            this.qty = qty;
            this.subTotal = subTotal;
        }
    
        public String subTotal;
    
        public String getCantitate() {
            return cantitate;
        }
    
        public void setCantitate(String cantitate) {
            this.cantitate = cantitate;
        }
    
        public String getPret() {
            return pret;
        }
    
        public void setPret(String pret) {
            this.pret = pret;
        }
    
        public String getProdus() {
            return produs;
        }
    
        public void setProdus(String produs) {
            this.produs = produs;
        }
    
        public String getProdusId() {
            return produsId;
        }
    
        public void setProdusId(String produsId) {
            this.produsId = produsId;
        }
    
        public String getQty() {
            return qty;
        }
    
        public void setQty(String qty) {
            this.qty = qty;
        }
    
        public String getSubTotal() {
            return subTotal;
        }
    
        public void setSubTotal(String subTotal) {
            this.subTotal = subTotal;
        }
    
    }
    

    当您将数据插入 firebase 时,您将获得唯一键 L-BmanPPTqqXxOivGZs

          mDatabaseReference.child("-L-BmanPPTqqXxOivGZs").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
    
                Datas datas = dataSnapshot.getValue(Datas.class);
               //now you have evry thing in yor pojo
    
            }
    
            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException());
            }
        });
    

    获取数据后,将其存储在适配器中,如下所示,这是适配器类..

    class ListAdapters extends ArrayAdapter<String> {
    
                public ListAdapters(Context context, int textViewResourceId) {
                    super(context, textViewResourceId);
                    // TODO Auto-generated constructor stub
                }
    
                private List<String> items;
    
                public ListAdapters(Context context, int resource, List<String> items) {
    
                    super(context, resource, items);
    
                    this.items = items;
    
                }
    
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
    
                    View v = convertView;
    
                    if (v == null) {
    
                        LayoutInflater vi;
                        vi = LayoutInflater.from(getContext());
                        v = vi.inflate(R.layout.list_item, null);
    
                    }
    
                    String p = items.get(position);
    
                    if (p != null) {
    
                        TextView tt = (TextView) v.findViewById(R.id.textviewid);
    
    
                        if (tt != null) {
                            tt.setText(p);
                        }
    
                    }
    
                    return v;
    
                }
             }
    

    关注代码 添加到您的班级 我们从哪里得到数据

    List<String> DataAdapter=new ArrayList<String>();
    DataAdapter.add(Datas.getCantitate());
    DataAdapter.add(Datas.getPret());
    DataAdapter.add(Datas.getProdus());
    DataAdapter.add(Datas.getProdusId());
    DataAdapter.add(Datas.getQty());
        ListAdapter customAdapter = new ListAdapter(this, R.layout.list_item, DataAdapter);
    
        ListView DataList=(ListView) findViewById(R.id.listview);
        DataList.setAdapter(customAdapter);
    

    【讨论】:

    • 谢谢,我怎样才能显示数据,用 setText 可以吗?
    • 还是有更好的选择?因为我想在列表视图中显示数据
    • 如果您已经完成了之前的操作,那么您可以将数据设置到列表视图中,然后我会更新我的代码等待......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多