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中擁有的所有鍵。

我希望有用。