【问题标题】:Android retrieve the data from Firebase and save it in ArrayListAndroid 从 Firebase 检索数据并将其保存在 ArrayList 中
【发布时间】:2021-04-19 19:27:06
【问题描述】:
The Firebase Realtime Database
我在 Firebase 中有一个评级列表。评分列表的子节点是用户名,然后是地名和评分。我想将地名和评分数据保存在不同的数组列表中。
问题:
- 如何通过跳过用户名来检索数据?
- 在数组列表中如何保存这样的数据
地名数组
['Bricks Diner'、'Kingstreet Café'、'Royce Hotel']、[AV Rani Supermart Sdn Bhd、FamilyMart Plaza Sentral..]
评分数组
[3, 1.5, 3.5], [5, 1.5]...
【问题讨论】:
标签:
java
android
firebase
firebase-realtime-database
【解决方案1】:
为此,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ratingRef = rootRef.child("Rating");
ratingRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot userSnapshot : task.getResult().getChildren()) {
List<String> places = new ArrayList<>();
List<Double> ratings = new ArrayList<>();
for (DataSnapshot placeSnapshot : userSnapshot.getChildren()) {
places.add(placeSnapshot.getKey());
ratings.add(placeSnapshot.child("rating").getValue(Double.class));
}
Log.d("TAG", places.toString());
Log.d("TAG", ratings.toString());
}
} else {
Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
第一条日志语句将打印在 logcat 中:
[Bricks Diner, Kingstreet Café, Royce Hotel]
[AV Rani Supermart Sdn Bhd, FamilyMart Plaza Sentral]
...
第二条日志语句将打印在 logcat 中:
[3, 1.5, 3.5]
[5, 1.5]
...
注意事项:
- 为了能够从像您这样的数据库架构中获取数据,您需要使用“.getChildren()”方法循环两次 DataSnapshot。
- 要获得该输出,您需要两个列表,第一个是“places”,第二个是“ratings”。
- 地点的名称是节点的键,而评级是节点内的子节点。