Java 从DateTime节点检索数据Firebase

Java 从DateTime节点检索数据Firebase,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想从Firebase检索数据,但我的问题是其中一个节点是每天的日期,我不知道如何进入它 这是我的JSON: { "jsonData": { "11-30-2017": { "Clau": { "-L-BmanPPTqqXxOivGZs": [ { "cantitate": "18", "pret": "140", "produs": "Camasa",

我想从
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")

我不知道下一步该怎么办。

Firebase API只允许您使用其
orderByChild
equalTo
方法过滤一级深度(或)的子级


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

您需要创建dao类以方便管理数据

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
            }

        });
@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-BMANPPTQXXOIVGZS

      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;

            }
         }
类ListAdapters扩展了ArrayAdapter{
公共ListAdapters(上下文上下文,int textViewResourceId){
super(上下文,textViewResourceId);
//TODO自动生成的构造函数存根
}
私人清单项目;
公共ListAdapters(上下文上下文、int资源、列表项){
超级(上下文、资源、项目);
这个项目=项目;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
拉平机vi;
vi=LayoutInflater.from(getContext());
v=vi.充气(R.布局.列表项,空);
}
字符串p=items.get(位置);
如果(p!=null){
TextView tt=(TextView)v.findViewById(R.id.textviewid);
如果(tt!=null){
tt.setText(p);
}
}
返回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);
List DataAdapter=new ArrayList();
add(Datas.getCantitate());
add(Datas.getPret());
add(Datas.getProdus());
添加(Datas.getProdusId());
DataAdapter.add(Datas.getQty());
ListAdapter customAdapter=新ListAdapter(此,R.layout.list_项,DataAdapter);
ListView数据列表=(ListView)findViewById(R.id.ListView);
DataList.setAdapter(customAdapter);

我试过了,没有工作,我每天都想要一些功能性的东西谢谢,我如何显示数据,用setText可以吗?或者有更好的选择吗?因为我想在listview中显示数据如果你已经完成了上一步,那么你可以将数据设置到listview中,然后我更新我的代码等等……你解决了问题吗?不,不可能,太难了