0
The main screen of my app consists of a few sessions using Recyclerview. For my recyclerview Adapter I pass an arraylist of type Sessoes for the screen to look the way I want. But this arraylist I can only fill statically. I’d like to fill it out dynamically just by adding a field in firebase, so I don’t have to fiddle with the code every time I want to add or delete a session. Below follow the screen and the codes. I use firebase as backend.
Class Sessions:
public class Sessoes {
private String nomeSessao;
private String descricaoSessao;
private String nomeSessaoBD;
private String img;
public Sessoes (){
}
public Sessoes(String nome, String desc, String nomeBD){
nomeSessao = nome;
descricaoSessao = desc;
nomeSessaoBD = nomeBD;
}
public String getNomeSessao() {
return nomeSessao;
}
public void setNomeSessao(String nomeSessao) {
this.nomeSessao = nomeSessao;
}
public String getDescricaoSessao() {
return descricaoSessao;
}
public void setDescricaoSessao(String descricaoSessao) {
this.descricaoSessao = descricaoSessao;
}
public String getNomeSessaoBD() {
return nomeSessaoBD;
}
public void setNomeSessaoBD(String nomeSessaoBD) {
this.nomeSessaoBD = nomeSessaoBD;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
}
Code for filling the arraylist:
public List<Sessoes> todasAsSessoes() {
List<Sessoes> sessoes = new ArrayList<>();
Sessoes sessoes_1 = new Sessoes("Próxima Ação","Informações sobre a próxima ação a ser realizada.", "proxima_acao" );
Sessoes sessoes_2 = new Sessoes("Galeria", "Fotos das ações já realizadas.", "galeria");
Sessoes sessoes_3 = new Sessoes("Quero Participar", "Quer ser voluntário em alguma ação?", "quero_participar");
Sessoes sessoes_4 = new Sessoes("Quero Doar", "O que você quer doar?", "quero_doar");
Sessoes sessoes_5 = new Sessoes("Calendário", "Confira o calendário das nossas ações.", "calendario");
Sessoes sessoes_6 = new Sessoes("Locais atendidos", "Confira os locais já visitados pelo Doe Amor", "locais_atendidos");
Sessoes sessoes_7 = new Sessoes("Contatos","Fale conosco!", "contatos");
Sessoes sessoes_8 = new Sessoes("Redes Sociais", "Junte-se a nós e espalhe o amor pelas suas redes", "redes_sociais");
Sessoes[] sessoesAdd = {sessoes_1, sessoes_2, sessoes_3, sessoes_4, sessoes_5, sessoes_6, sessoes_7, sessoes_8};
for (int i=0 ; i <sessoesAdd.length ; i++){
sessoes.add(sessoesAdd[i]); }
return sessoes;
}
It is precisely this code above that I need to change to be filled dynamically.
Arraylist Pass Code for Recyclerview Adapter:
sessoes = todasAsSessoes();
recyclerView = (RecyclerView) findViewById(R.id.recycler);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
AdapterSessoes adapter = new AdapterSessoes(sessoes, this);
recyclerView.setAdapter(adapter);
recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
Screen of how the sessions are arranged:
Man, sorry I’m just a beginner. I’ve already read the firebase documentation and run some tests. But here I could not identify how I will fill the data in the object. I have 4 attributes in it that are. As you put it, if I understand correctly, it will already load the 4 firebase values on the object, but how will it know which attribute to put?
– Marcelo Portela
Sorry for the delay in answering. Anyway, I don’t know if you’ve solved your problem, but let’s answer your question: when you call
getValue(Sessao.class)
, the method already maps the properties coming from the database based on the names of the getters and setters of your model (Sessao.class). For example: if I have onegetName()
,getNumber()
andgetAddress()
it already maps properties in the database asname
,number
,address
; and when you recover the data by passing your model, it already knows where to set the values:setName()
,setNumber()
andsetAddress()
– Ivan Silva
So the names in the database have to be the same as the ones in my class?
– Marcelo Portela
That’s right @Marceloportela. Still doubt?
– Ivan Silva
Manoooo WAS WORTH TOO MUCH, I managed to solve here.... Thanks Ivan Silva
– Marcelo Portela
I’m happy to help @Marceloportela! If your problem has been solved thanks to my answer, please accept it as correct.
– Ivan Silva