I'm having some problem with Firebase method addValueEventListner(). My code should bring me user messages from my database and show it in a ListView called conversa, but it's not getting anything back.
Debugging the code, it did not enter in new ValeuEventListener(...) and getView() neither, although getView is working fine.
I made a teste filling the ArrayList with Mensagem local objetcs and it works.
Anyone knows where am I messing up?
The conversation activity:
public class ConversaActivity extends AppCompatActivity {
<...>
mensagens = new ArrayList<>();
adapter = new MensagemAdapter(
ConversaActivity.this,
mensagens);
conversa.setAdapter(adapter);
//Buscando todas as mensagens
firebase = ConfigFirebase.getFirebase();
firebase.child("mensagem").child(id_remetente).child(id_destinatario);
//Listener para as mensagens
valueEventListenerMensagem = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mensagens.clear();
for(DataSnapshot dados: dataSnapshot.getChildren()) {
Mensagem mensagem_recuperada = dados.getValue(Mensagem.class);
mensagens.add(mensagem_recuperada);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
firebase.addValueEventListener(valueEventListenerMensagem);
<...>
}
The messages adapter:
public class MensagemAdapter extends ArrayAdapter<Mensagem> {
private Context context;
private ArrayList<Mensagem> mensagens;
public MensagemAdapter(Context c, ArrayList<Mensagem> objects) {
super(c, 0, objects);
this.context = c;
this.mensagens = objects;
}
@Override
public View getView(int position, @Nullable View convertView, ViewGroup parent) {
View view = null;
if(mensagens != null) {
Preferencias preferencias = new Preferencias(context);
String id_remetente = preferencias.getIdentificador();
//Inicializando metódo que traz o layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
Mensagem mensagem_index = mensagens.get(position);
if(id_remetente.equals(mensagem_index.getIdUsuario())) {
view = inflater.inflate(R.layout.item_mensagem_enviada, parent, false);
TextView textoMensagem = (TextView) view.findViewById(R.id.id_msg_enviada);
textoMensagem.setText(mensagem_index.getMensagem());
} else {
view = inflater.inflate(R.layout.item_mensagem_recebida, parent, false);
TextView textoMensagem = (TextView) view.findViewById(R.id.id_msg_recebidas);
textoMensagem.setText(mensagem_index.getMensagem());
}
}
return view;
}
}
Firebase "mensagens" branchs are like - added with .push():
mensagens
id_remente
id_destinatario
mensagem_object
mensagem_object
....