如何从 Firebase 加载孩子
Posted
技术标签:
【中文标题】如何从 Firebase 加载孩子【英文标题】:How to load children from Firebase 【发布时间】:2020-09-09 03:46:38 【问题描述】:我有一些代码可以存储特定操作系统在 Firebase 上的投票次数。我使用以下内容来存储它:
DatabaseReference windowsChoice;
在 onCreate 方法内部:
FirebaseDatabase.getInstance().getReference("Windows");
在按钮方法中,我将数据存储到 firebase:
String id = "TimesClicked";
windowsChoice.child(id).setValue(b); //b holds the amount of times that Windows has been clicked
生成的格式是这样的:
"Windows":"TimesClicked":8,"choice1Num":23 // ignore choice1Num
以下代码将为我获取 Windows (TimesClicked:8) 的值:
String result = new Connector().execute().get();
JSONObject ob = new JSONObject(result);
String jsonString = ob.getString("Windows");
String id = "TimesClicked";
windowsChoice.child(id).setValue(b);
intent.putExtra("result", jsonString);
startActivity(intent);
但是我怎样才能得到 TimesClicked 标签的值呢?
【问题讨论】:
【参考方案1】:但是如何获取 TimesClicked 标签的值呢?
只需使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference timesClickedRef = rootRef.child("Windows").child("TimesClicked");
ValueEventListener valueEventListener = new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
long timesClicked = dataSnapshot.getValue(Long.class);
Log.d("TAG", "timesClicked: " + timesClicked);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
;
timesClickedRef.addListenerForSingleValueEvent(valueEventListener);
logcat 中的结果将是:
timesClicked: 8
【讨论】:
如果在方法内声明了 OnDataChange 之外的 timesClicked,我如何访问它? 你只能在那里使用它,或者你可以将它传递给另一个方法。这是因为 Firebase API 是异步的。有一个解决方法,您可以使用custom callback。 嘿,本!如果您认为我的回答对未来的 Firebase 开发者也有帮助,也请考虑投上一票(▲)。我真的很感激。谢谢!以上是关于如何从 Firebase 加载孩子的主要内容,如果未能解决你的问题,请参考以下文章