0

Ich habe versucht, alle meine Niederlassungen (Firebase) mit RecyclerView auf Android zu zeigen. Das ist mein JSON:Zeige Zweigschlüssel/Name RecyclerView + Firebase

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

ich mit RecyclerView Notice1 zeigen wollen, Notice2, notice3 aber es scheint unmöglich zu erreichen.

Was kann ich tun?

Vielen Dank im Voraus

Edit:

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

Warum ist es unmöglich? Sagen Sie den Grund – Piyush

+0

Haben Sie etwas versucht? – Meenal

+0

Ich weiß nicht, wie man das mit RecyclerView implementiert, es scheint, RecyclerView kann nur "final Branches" zeigen, die Finals-Variablen als "subnotice1" enthält: "testX", aber zeigt keine Schlüssel aus den Zweigen – Jotadrive

Antwort

0

LÖSUNG: Ich erkannte ich die Schlüssel auf Arraylist zu halten hatte, und später nur um es zu zeigen haben:

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

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

In Adapter:

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)); 
       } 
      }; 

Auf diese Weise zeigt "populateViewHolder" durch RecyclerView alle Schlüssel an, die wir im Array haben.

Ich hoffe, dass es nützlich ist.

Verwandte Themen