0

我一直试图用Android上的RecyclerView显示我所有的分支(Firebase)。 这是我的JSON:显示分支关键字/名称RecyclerView + Firebase

"notice" : { 
    "notice1" : { 
     "subnotice1" : "test1", 
     "subnotice2" : "test2", 
     "subnotice3" : { 
     "test" : "test" 
     } 
    }, 
    "notice2" : { 
     "subnotice1" : "test3", 
     "subnotice2" : "test4" 
    }, 
    "notice3" : { 
     "subnotice1" : "test5", 
     "subnotice2" : "test6" 
    } 
    } 
} 

我想RecyclerView notice1,notice2,notice3展现,但它似乎是不可能实现的。

我该怎么办?

在此先感谢

编辑:

private List<String> lista = new ArrayList<>(); 
private FirebaseRecyclerAdapter adaptador; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    RecyclerView rv = (RecyclerView) findViewById(recyclerView); 
    rv.setHasFixedSize(false); 
    rv.setLayoutManager(new LinearLayoutManager(this)); 
    DatabaseReference dbr = FirebaseDatabase.getInstance().getReference().child("compuestos"); 
    dbr.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      lista.removeAll(lista); 
      for (DataSnapshot a : dataSnapshot.getChildren()) { 
       Log.d("DIEGO", a.getKey()); 
       lista.add(a.getKey()); 
      } 
      for(String s: lista){ 
       Log.d("KOKO", s); 
      } 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e("DIEGO", "ERROR", databaseError.toException()); 
     } 
    }); 

    adaptador = new FirebaseRecyclerAdapter<Datos, Holder>(Datos.class, R.layout.lista_elementos, Holder.class, dbr) { 
     @Override 
     protected void populateViewHolder(Holder h, Datos d, int position) {    for(String s : lista){ 
       d.setCampo(s); 
       h.setCampo(d.getCampo()); 
      } 

     } 
    }; 
    rv.setAdapter(adaptador); 
} 
+0

为什么不可能?说出原因 – Piyush

+0

你尝试过什么吗? – Meenal

+0

我不知道如何实现与RecyclerView,看来RecyclerView只能显示“最终分支”,其中包含最终变量为“subnotice1”:“testX”,但不显示分支的键 – Jotadrive

回答

0

SOLUTION: 我意识到我必须保持对ArrayList中的钥匙,以后只需要显示它:

private ArrayList<String> keys = new ArrayList<String>(); 
//... 

ChildEventListener childEventListener = new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      keys.add(dataSnapshot.getKey()); 
     } 

In适配器:

mAdapter = 
      new FirebaseRecyclerAdapter<Trabajo, TrabajoHolder>(Trabajo.class,R.layout.lista_trabajos ,TrabajoHolder.class, dbAvisos) { 
       @Override 
       protected void populateViewHolder(TrabajoHolder viewHolder, Trabajo model, int position) { 
         viewHolder.setKey(keys.get(position)); 
       } 
      }; 

通过这种方式,“populateViewHolder”将通过RecyclerView显示我们在Array中拥有的所有键。

我希望有用。