Fala ae pessoal, eu estou tendo alguns problemas depois que o Firebase fez o seu ultimo update. O meu maior problema no momento é que eu não estou conseguindo arrumar uma classe de uma aplicação que eu tinha feito antes desse update.
A classe abaixo esta retornando 3x o mesmo nome no meu listview, sendo que eu tenho 3 usuarios cadastrados e todos os 3 tem nomes diferentes.
Obs: Ele retorna 3x o nome do usuario que o aplicativo esta logado.
package com.example.stark.chattest;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.ListView;
import com.example.stark.chattest.model.Message;
import com.example.stark.chattest.model.User;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
public class ChatActivity extends AppCompatActivity {
private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private FirebaseDatabase database = FirebaseDatabase.getInstance(); private DatabaseReference myRef = database.getReference("users"); private String TAG = "Resultado: ";
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat);
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in } else { Intent intent = new Intent(ChatActivity.this, SignActivity.class); startActivity(intent); finish(); } } };
ImageButton sendImageButton = (ImageButton) findViewById(R.id.sendImageButton);
sendImageButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { EditText messageEditText = (EditText)findViewById(R.id.messageEditText); FirebaseUser firebaseUser = mAuth.getCurrentUser(); Message message = new Message(); message.setMessage(String.valueOf(messageEditText.getText())); message.setRead(true); message.setTime(22221); message.setSendersID(firebaseUser.getUid()); message.setReceiversID("WTImZyGv5fcOJlGWI9fi0gdrfbd2");
myRef.child(message.getSendersID()).child("message").child(message.getReceiversID()).child("1").setValue(message);
//Set the Reciever Message message.setRead(false); myRef.child(message.getReceiversID()).child("message").child(message.getSendersID()).child("1").setValue(message); } });
ChildEventListener childEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
}
@Override public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) { ArrayList<String> userName = new ArrayList<String>();
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { User user = dataSnapshot.getValue(User.class); userName.add(user.getName()); ListAdapter usersListViewAdapter = new ArrayAdapter<String>(ChatActivity.this, android.R.layout.simple_list_item_1, userName); ListView usersListView = (ListView) findViewById(R.id.chatListView); usersListView.setAdapter(usersListViewAdapter); } }
@Override public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
}
@Override public void onCancelled(DatabaseError databaseError) {
} }; myRef.addChildEventListener(childEventListener); }
}
Abaixo eu vou postar a tabela do meu DB.