大佬教程收集整理的这篇文章主要介绍了如何使用这两种功能在Firebase- Android上收听数据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
"node": { "node1": { "value1": value,"value2": value,"subSubNode":{ //....values....// },},"node2": { ... },"node3": { ... } //...and so on ..// }
第一:我想从Firebase获取所有数据并渲染到我的树,所以我使用了addListenerForSingleValueEvent()函数.
然后:我使用addChildEventListener()函数来监听节点或子节点何时更改,删除或添加…
private void getData(Query ref){ ref.addListenerForSingleValueEvent(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot dataSnapshot) { **I render data on my tree here** } @Override public void onCancelled(FirebaseError firebaseError) { } }); ref.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot,String s) { Log.i(tag,"onChildAdded"); } @Override public void onChildChanged(DataSnapshot dataSnapshot,"onChildChanged"); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { Log.i(tag,"onChildRemoved"); } @Override public void onChildMoved(DataSnapshot dataSnapshot,"onChildMoved"); } @Override public void onCancelled(FirebaseError firebaseError) { Log.i(tag,"onCancelled"); } }); }
但是addChildEventListener()函数中的onChildAdded()方法总是先运行.我有什么想法或解决方案吗?我在该位置使用addChildEventListener()函数是否正确?
一旦调用addChildEventListener(),就会为每个现有的子节点调用onChildAdded().您可以使用这些事件来构建初始树.添加初始数据后,随着数据的更改,您将收到对所有onChild …方法的调用.
因此,不要注册addListenerForSingleValueEvent(),只需从ChildEventListener的方法构建树.
或者,如果要单独处理初始数据,可以使用event guarantees that Firebase has中的一个:
@R_@R_197_11263@_8487@an isInitialValueLoaded = false; ref.addListenerForSingleValueEvent(new ValueEventListener(){ public void onDataChange(DataSnapshot dataSnapshot) { **I render data on my tree here** isInitialValueLoaded = true; } public void onCancelled(FirebaseError firebaseError) { } }); ref.addChildEventListener(new ChildEventListener() { public void onChildAdded(DataSnapshot dataSnapshot,String s) { if (!isInitialValueLoaded) return; Log.i(tag,"onChildAdded"); } public void onChildChanged(DataSnapshot dataSnapshot,"onChildChanged"); } public void onChildRemoved(DataSnapshot dataSnapshot) { if (!isInitialValueLoaded) return; Log.i(tag,"onChildRemoved"); } public void onChildMoved(DataSnapshot dataSnapshot,"onChildMoved"); } public void onCancelled(FirebaseError firebaseError) { Log.i(tag,"onCancelled"); } });
以上是大佬教程为你收集整理的如何使用这两种功能在Firebase- Android上收听数据全部内容,希望文章能够帮你解决如何使用这两种功能在Firebase- Android上收听数据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。