[英]How to show a specific child value from Firebase in Android?
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("User Allergens").child(uid); DatabaseReference 参考 = FirebaseDatabase.getInstance().getReference().child("User Allergens").child(uid);
what do i need to add after.child(UID)?我需要在 after.child(UID) 之后添加什么? the code I have:我的代码:
ArrayList<String> list = new ArrayList<>();
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, list );
listView.setAdapter(adapter);
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("User Allergens").child(uid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren() ){
list.add(snapshot.getValue().toString());
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
picture of data structure in firebase, have a look for a clear view. firebase中的数据结构图,看看清楚。
As I see in your screenshot, under the following reference:正如我在您的屏幕截图中看到的,在以下参考中:
FirebaseRoot -> User Allergens -> UID
You have a few children of type String, that contain some values like Lactose
, Gluten
or Sugar
.您有几个 String 类型的子项,其中包含一些值,例如Lactose
、 Gluten
或Sugar
。 To get all these values and use them in your adapter, please use the following lines of code:要获取所有这些值并在适配器中使用它们,请使用以下代码行:
ListView listView = (ListView) findViewById(R.id.list_view);
List<String> list = new ArrayList<>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, list);
listView.setAdapter(arrayAdapter);
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("User Allergens").child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot alergenSnapshot : task.getResult().getChildren()) {
String alergen = alergenSnapshot.getValue(String.class);
list.add(alergen);
}
adapter.notifyDataSetChanged();
} else {
Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
If task.getException().getMessage()
yelds no errors, then the result of the above code will be a ListView filled up with alergen names from your Firebase Realtime Database.如果task.getException().getMessage()
没有出现错误,则上述代码的结果将是一个 ListView,其中填充了来自 Firebase 实时数据库的过敏原名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.