Android Firebase返回从addListenerForSingleValueEvent检索到的值
我是Firebase的新手,从Firebase的文档中我学到的是,如果您只想检索一次数据,就要使用Android Firebase返回从addListenerForSingleValueEvent检索到的值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我是Firebase的新手,从Firebase的文档中我学到的是,如果您只想检索一次数据,就要使用addListenerForSingleValueEvent 我的问题是将其集成到我的代码中。 我有这样的数据结构: 现在我想在16032017下添加一个新对象。为此,我必须执行以下步骤: 首先,我必须看看是否存在16032017 我必须看看它有多少个孩子(在这个例子3中) 在获得子节点的数量后,我将使用键3创建一个新的子节点,并插入我的数据值对,该对象如下所示: public class Sti
addListenerForSingleValueEvent
我的问题是将其集成到我的代码中。
我有这样的数据结构:
现在我想在16032017下添加一个新对象。为此,我必须执行以下步骤:
public class StimmungAbfrage {
public Integer Angespannt ;
public Integer Motiviert;
}
addListenerForSingleValueEvent
读取子节点的数量。我编写了如下代码:
URL url = new URL(DAL_Utilities.DatabaseURL + "players/" + user.getName() + "/Stimmungsabfrage/" + stimmungAbfrage.Date + "/");
Firebase root = new Firebase(url.toString());
root.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long counter = 1;
counter = dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.d("DAL_User.GetLTSabfrage",firebaseError.getMessage());
}
});
但问题是我无法获取计数器的值,因为它是无效的
。因此,无法返回数据以在插入过程的另一个函数中使用它。
然后我尝试在onDataChange
中执行读取和插入事务。但这也是不可能的,因为我无法找到将数据传递给这个函数的方法,我想将数据插入数据库。此外,函数无法访问实现了addListenerForSingleValueEvent
的主类的数据,除非我将所有变量设置为全局变量,这不是正确的方法。
那么,如何使用Firebase实现这个简单的读写过程呢?您不必查看父节点是否存在。Firebase是无模式的。此外,--如果没有唯一标识符用作密钥,请使用中所述的推送ID。你不需要这些,遵循指南和最佳实践,它会简单得多。
ref.child("16032017").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
StimmungAbfrage stim = postSnapshot.getValue(StimmungAbfrage.class);
String string = " Angespannt: "+stim.get Angespannt()+"\nMotiviert: "+stim.getMotiviert();
textView.setText(string);
}
}});