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中,然后我更新我的代码等等……你解决了问题吗?不,不可能,太难了