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時,最初使我絆倒。很高興能爲你滾動。 –