下载保存到Firebase数据库中的数据(使用按键)

时间:2018-10-13 15:05:17

标签: java android firebase

希望您今天过得很好。我想知道一种将数据下载到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)

1 个答案:

答案 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);