Push firebase android中的更新值
Posted
技术标签:
【中文标题】Push firebase android中的更新值【英文标题】:Update Values within Push firebase android 【发布时间】:2017-07-24 03:58:25 【问题描述】:这是我的 Firebase 数据结构。
现在我基本上想做的是,首先是 Id:"cbn"。我已经用 push().setValue(gpsData) 推送了位置。 现在基于这个 id = "cbn",我想在 id = "cbn" 中添加新的纬度和经度strong>Location child 使用"push() 完全如上图所示。 到现在我的代码是:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
if (busExists)
// busId = "cbn"
mDatabase.child(busId).child("Location").push().setValue(gpsData);
我知道我不能将 busId 引用为子节点,但我如何访问该特定节点并将我的新数据推送到它。
有什么帮助吗?
对于新问题:
public class Users
private String bus_id;
private HashMap<String, String> coord = new HashMap<>();
public Users()
public String getBus_id()
return bus_id;
public void setBus_id(String bus_id)
this.bus_id = bus_id;
public HashMap<String, String> getCoord()
return coord;
public void setCoord(HashMap<String, String> coord)
this.coord = coord;
我是这样实现的:
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
for (DataSnapshot ds : dataSnapshot.getChildren())
Users bus = new Users();
bus.setBus_id(ds.getValue(Users.class).getBus_id());
Log.e("bus id: ", bus.getBus_id()+""); // I got NULL
busList.add(bus.getBus_id());
arrayAdapter.notifyDataSetChanged();
@Override
public void onCancelled(DatabaseError databaseError)
);
【问题讨论】:
【参考方案1】:您需要触发查询以获取cbn
的推送 ID,然后从那里添加位置:
Query query = ref.child("Users").orderByChild("Id").equalTo("cbn");
query.addListenerForSingleValueEvent(new ValueEventListener()
public void onDataChange(DataSnapshot snapshot)
for (DataSnapshot user: snapshot.getChildren())
user.getRef().child("Location").push().setValue(...);
需要onDataChange()
中的循环,因为可能有多个子节点匹配查询。如果只能有一个具有特定 Id
的孩子,请考虑将用户存储在该 Id 下。
Users
cbd
Locations:...
使用此结构,您无需先查询即可添加新位置:
ref.child("Users/cbn/Location").push().setValue(...);
【讨论】:
谢谢。有效。但同样,我还有另一个小问题。我已经为您编辑了代码(也是图表)。现在我想要的是读取所有这些单个节点的所有数据(ID,位置),即每个 id 'cbn' , 'uoohj' 等等。为此,我创建了一个用户类,它记录了存储纬度和经度的“id”和“坐标”哈希图。我还提到了我在上面的代码中遵循的方法。但它没有奏效。您能否就如何做到这一点提供一些见解?谢谢。以上是关于Push firebase android中的更新值的主要内容,如果未能解决你的问题,请参考以下文章
从Firebase实时数据库读取Android数据并在RecyclerView上显示
如何使用 Firebase 实时数据库在不知道 Android 索引的情况下更新 ArrayList 中的元素?
如何在不更改实时数据库中的 downloadUrl 的情况下更新 android 中 Firebase 存储中的位图图像