2017-11-11 288 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);