0
我对Java很新,所以如果这是非常直截了当的道歉。Android:如何通过Firebase Datasnapshot循环并将类存储在类级别数组列表中?
我正试图循环访问我的Firebase数据库,并将每个子项的关键集存储在ArrayList中。
这里是代码的短版:
public class MainActivity extends AppCompatActivity {
private DatabaseReference mRefEvents;
private List<String> newArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRefEvents = FirebaseDatabase.getInstance().getReferenceFromUrl("https:***");
newArray = new ArrayList<String>();
mRefEvents.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for (DataSnapshot child : dataSnapshot.getChildren())
{
for (DataSnapshot grandChild : child.getChildren())
{
newArray.add(grandChild.getKey());
}
}
Log.i("App info middle", newArray.toString());
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
Log.i("App info end", newArray.toString());
}
}
当我登录addValueEventListener
方法中(“应用信息中”)newArray,我得到正是我所需要的值。但是,底部的第二个日志(“App info end”)给了我一个空数组,并且不会将密钥存储到ArrayList newArray中。
我敢肯定我错过了一些简单的东西,但任何建议将不胜感激。谢谢!
你是绝对正确的亚历山大。这里是控制台输出 –
12-26 20:02:13.175 8247-8247/com.example.kaznaur.simafirebasetrial I /应用信息结束:[] 12-26 20:02:14.259 8247-8247/com.example。 kaznaur.simafirebasetrial我/应用信息中间:[辩论,演讲,学士,家庭主妇,语音,足球] 12-26 20:02:20.760 8247-8247/com.example.kaznaur.simafirebasetrial我/应用信息buttonClick:[辩论,演讲,学士,家庭主妇,声音,足球] 12-26 20:02:30.311 8247-8247/com.example.kaznaur.simafirebasetrial我/应用程序信息buttonClick:[辩论,演讲,学士,家庭主妇,声音,足球] –
在使用Firebase时,最初使我绊倒。很高兴能为你滚动。 –