2017-11-11 283 views
0

嗨,我是在火力和Android工作室新和我有一個問題火力地堡和recyclerView

我想這個數據庫的數據陣列存儲在數組中,並在下一次使用,使回收者視圖

enter image description here

然後在主要活動我寫了這個:

enter image description here

如果我只運行的應用程序這顯示:

enter image description here

但是,如果我做同樣的但不是火力我使用的String []與數據我想說明它的工作原理,但我不知道爲什麼與火力點我可以」噸。

,如果我這個改變引用:

reference = database.getReference(FirebaseReferences.POKEMONS_REFERENCES); 
     reference.child(FirebaseReferences.APP_REFERENCES).addValueEventListener(new ValueEventListener() { 

當我運行的應用程序,它會自動關閉,我不知道該怎麼辦。

你能告訴我我做錯了什麼嗎?

預先感謝您。

這裏是logcat的 所有的https://github.com/adcasna/SearchViewPrueba2/wiki

+0

顯示您的logcat的。 – Deepa

+0

Ater for循環嘗試調用adapter.notifyDataSetChanged(); –

+0

你應該添加你的代碼而不是添加圖片的問題。 –

回答

0

Fisrts,請注意火力地堡文檔建議不要使用數組。談到Firebase時,使用數組是一種反模式。 Firebase建議不要使用陣列的原因之一是它使安全規則無法寫入。如果你仍然想使用這種結構,爲獲得這些名稱,並將其存儲在一個ArrayList,請使用如下代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference appRef = rootRef.child("pokemons").child("app"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List<String> list = new ArrayList<>(); 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String c_name = ds.child("c_name").getValue(String.class); 
      list.add(c_name); 
      Log.d("TAG", c_name); 
     } 
     Log.d("TAG", list); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
appRef.addListenerForSingleValueEvent(eventListener);