嘿人们:)我对编程非常陌生,只是在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);
}
答案 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();
}
});