android - 从 firebase 获取特定数据
问题描述
我想从我的数据库 firbase(“电话”孩子)中获取数据,您可以观看照片:
https://b.top4top.net/p_936hbh5o1.png
我正在使用此代码获取数据,但我有错误(java.lang.NullPointerException)。
int i=0;
DatabaseReference mDatabase;
// ...
mDatabase = FirebaseDatabase.getInstance().getReference(); // instancie
la BDD
FirebaseUser currentFirebaseUser =
FirebaseAuth.getInstance().getCurrentUser() ; // recup le yser courent
String id= currentFirebaseUser.getUid(); // recup id user actrulle
DatabaseReference usersRef =
mDatabase.child("Users").child(id).child("favoris");
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i=0;
//ArrayList Userlist = new ArrayList<favoris>();
// Result will be holded Here
for (DataSnapshot dsp : dataSnapshot.getChildren()) {
Map<String, Object> td = (HashMap<String,Object>)
dataSnapshot.getValue();
ArrayList<Object> objectArrayList = new ArrayList<Object>
(td.values());
//favoris fav = (favoris) td.values();
favoris fav = (favoris) objectArrayList.get(0);
names[i]= fav.name;
i++;
}
解决方案
创建一个 POJO 类,您可以在其中获取所需的元素,在这种情况下只是电话,您还可以获取地址和名称,只需在此处添加 setter 和 getter。
public class FavorisPojo {
String phone;
public FavorisPojo() {
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
然后只需遍历所有节点并得到:
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i=0;
//ArrayList Userlist = new ArrayList<favoris>();
// Result will be holded Here
for (DataSnapshot dsp : dataSnapshot.getChildren()) {
FavorisPojo favoris = dsp.getValue(FavorisPojo.class);
String phone = favoris.getPhone();
}
我们使用字符串来获取电话,因为它是在您的 Firebase 数据库中加载的,如果您想更改它,只需在您的 FavorisPojo 类中更改您的变量名称。
此外,您的参考资料还需要更深一层,如下所示:
DatabaseReference usersRef =
mDatabase.child("Users").child(id).child("favoris").child(the_id_containing_after_favoris);
推荐阅读
- php - 由于 CORS“Access-Control-Allow-Origin”不存在,phpCAS 注销失败
- xml - 如何从 woocommerce 为其他 cms 平台创建 xml 提要?
- c# - 将 RTF 保存在数据库上并将其加载回 WinForms 应用程序
- html - 如何将 cdkDropList 的元素放入 div?
- c# - 从类方法中获取属性名称
- excel - 如何在不使用 Ctrl+Shift+Enter 的情况下在 Excel VBA 中激活 FormulaArray?
- c# - 具有相同 ToolStripMenuItem 的 ShortcutKeys 的多个控件
- ios - 如何删除firebase数据库
- c++ - 尝试用 C++ 编写 Graph,有时会遇到 bad_alloc
- c# - 使用 int / short 代替 Int32 / Int16 调用外部 dll 导入方法