我想从Firebase实时数据库中获取整个JSON数组。从实时数据库中提取数组并将其存储在自定义类的ArrayList中。
首先,位置
节点不是数组
是一个在术语中保存其他位置对象的对象。其次,正如我在您的屏幕截图中看到的,您的数据库结构不太好。您的collion
节点应该保存相同类型的对象。在您的情况下,它保存用户对象和位置
对象。正如我所看到的,在您的位置对象中,您实际上是您的用户的坐标,为此我建议您将数据库结构更改为:
Firebase-root
|
--- collion
|
--- userId
|
--- email: "jawadkhant557@gmail.com"
|
--- id: "CQuL...ihq1"
|
--- name: "jawadkhan"
|
--- location
|
--- latitude: 31.54614619
|
--- longitude: 74.40240774
在这种情况下,当您想获取用户的纬度和经度时,只需使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("collion").child(uid).child("location");
uidRef.addListenerForSingleValueEvent(/* ... */);
假设您有一个名为Collion
的模型类,它有三个字段email
、id
、name
和位置
map加上相应的getter,如果您想获取所有用户对象,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference collionRef = rootRef.child("collion");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Collion collion = ds.getValue(Collion.class);
Log.d("TAG", collion.getName());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
collionRef.addListenerForSingleValueEvent(valueEventListener);
使用此代码(带有地图的示例)
Map<String, Place> placeMap;
DatabaseReference places;
ArrayList<Place> placeData;
在onCreate中
database = FirebaseDatabase.getInstance();
places = database.getReference("Place");
placeMap = new HashMap<>();
创建方法(在firebase中获取数据)
private void getAllMarkerPlace() {
places.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
placeData = new ArrayList<>();
place = postSnapshot.getValue(Place.class);
placeMarker = new LatLng(Double.valueOf(place.getLat()), Double.valueOf(place.getLng()));
place.setLatLng(placeMarker);
placeData.add(place);
placeMap.put(place.getName(), place);
mMap.setOnInfoWindowClickListener(MapsActivity.this);
mMap.addMarker(new MarkerOptions()
.position(placeMarker)
.title(place.getName()));
mMap.setInfoWindowAdapter(MapsActivity.this);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
我正在尝试获取我的用户名,并在应用程序打开时向他/她问好。但我无法根据某个用户的uid获取数据。当我运行应用程序时,祝酒词从未真正出现。 数据库结构 密码
我正在寻找一种方法,以数组[]或字符串等格式从Firebase实时数据库获取数据。 我的数据库如下所示:链接到数据库的图像 或者:
我试图在我的应用程序中创建一个搜索功能,它基本上根据用户的查询(如任何产品名称)过滤json数据(如产品列表),并显示最接近的结果。我已经成功实现了这个搜索栏和过滤逻辑,但它是在我的应用程序中我的产品列表的本地json数据上工作的。我想要的是从网络调用(http调用)中获取json数据,然后进行过滤。但是我的实时数据库中有数据,我不知道如何以json格式检索它们。我可以设置云函数(节点js)来将j
我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(
我真的很难从数据库中收集数据。我正在使用实时数据库,我正在将这些值添加到一个可以单击的列表中。 当我单击列表上的用户时,我需要获取用户名值来创建聊天ID。这是我的问题,以获得键内的值。我现在的做法似乎行不通。 这是我的数据库 我需要取给“name”的值。 这是我的密码
我有一个带有此模式的数据库: 我测试了这段代码,但我无法从数据库中获得任何消息。我会感谢你的帮助。