使用Android Studio从Firebase中的特定位置检索数据

时间:2018-09-09 15:53:50

标签: android firebase firebase-realtime-database

嘿人们:)我对编程非常陌生,只是在Android Studio中使用RecyclerView了。

现在我想从Firebase中的位置x检索数据:

例如,我的数据库包括:

用户: Max(字段:大学,年龄,城市) Lena(字段:大学,年龄,城市)

我不知道有多少用户,他们的名字是什么,我想在位置x上获取一个用户的所有数据。

有人知道如何解决该问题吗? 预先感谢!

编辑: 现在,我从用户保存了UID,并将其传递给其他活动。然后,我尝试从firebase接收所有数据,但是仍然无法在TextView中显示“大学”字段中的数据。

public class nextActivity extends AppCompatActivity{

String UID;
private DocumentReference myReference;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next_activity);

//get data from intent (I checked the value of UID - getIntent worked.)
UID = getIntent().getStringExtra("uid");

// I am not sure with the following line. Is it possible to just add "UID"?
myReference = FirebaseFirestore.getInstance().document("Users/"+UID);
myReference.addSnapshotListener(new EventListener<DocumentSnapshot>() {
    @Override
    public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
        if (documentSnapshot.exists()) {

            long universityID = documentSnapshot.getLong("university");
            cUniversityText.setText("University"+Long.toString(universityID));

        } else if (e != null) {
            Log.w("InspiringQuote", "Exception!", e);
        }
    }
});
cUniversityText = findViewById(R.id.cuniversitytext);

}

1 个答案:

答案 0 :(得分:1)

我认为这可能对您有所帮助

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        DataSnapshot users = dataSnapshot.child("users");
        int count=0;
        for (DataSnapshot usrchild : users.getChildren()){
           count++;
           if(count == 'Position x variable'){
              DataSnapshot university = usrchild.child("University");
              DataSnapshot age = usrchild.child("Age");
              DataSnapshot City = usrchild.child("City");
              if(!String.valueof(university.getValue()).matches("")){
              //Value is not null
              }
           }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
    }
});