希望您今天过得很好。我想知道一种将数据下载到Firebase数据库中的方法。 为了将数据添加到我的Firebase数据库中,我使用了一个push节点,因此我可以为同一个uid(用户ID)添加多个帖子。 我已成功将数据保存到数据库中,但无法下载。我已经学习了Firebase文档, 我知道我可以使用datasnapshoot,但是我不知道如何在我的代码中实现它。 希望您能够帮助我。谢谢。
将数据上传到Firebase数据库。我使用此方法以这种格式保存数据:
Data
- example-data
- uid
- key (push key generated by firebase)
- dataOne : dataOne
- dataTwo : dataTwo
..........code of the method .........................
private void addData(String dataOne, String dataTwo) {
final String key;
final String uid;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
uid = user.getUid();
key = mDatabase.child("Data").push().getKey();
data data = new data(dataOne, dataTwo);
Map<String, Object> postValues = data.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("Data" + "/example-data/" + uid + "/" + key, postValues);
mDatabase.updateChildren(childUpdates)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Intent intent = new Intent(Prova.this, Test.class);
startActivity(intent);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
调用方法addData可以通过按钮上传:
public void buttonAddData(View view) {
String dataOne = mDataOne.getText().toString();
String urlSecondaImmagine = mDataTwo.getText().toString();
addData(dataOne, dataTwo);
}
这是数据类:
public class data {
public String dataOne;
public String dataTwo;
public data(){}
public data (String dataOne, String dataTwo){
this.dataOne = dataOne;
this.dataTwo = dataTwo;
}
public String getDataOne() {
return dataOne;
}
public String getDataTwo() {
return dataTwo;
}
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("dataOne", dataOne);
result.put("dataTwo", dataTwo);
return result;
}
}
我的主要任务是将这两个数据下载到我的数据库中。我需要将这两个数据显示到其他 活动并显示为textviw。
![These two number: 9hiJ0YxyZXZnlrKFxv3jyhQlKUG2 LOca2YbV6Qb5q1RG1ws. First is ID of the user second is the push key generated by firebase database ](https://i.stack.imgur.com/NCBIa.jpg)
答案 0 :(得分:0)
要解决此问题,请使用以下代码:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Annunci").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String categoria = ds.child("categoria").getValue(String.class);
Log.d(TAG, categoria);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
您的logcat中的输出将是:
Electtronic
//other items
如果该对象使用模型类,则应使用以下代码行获取所需的对象:
YourModelClass yourModelClass = ds.getValue(YourModelClass.class);