Я делаю это простое приложение для чата, где любой человек может зарегистрироваться, указав свое имя, адрес электронной почты и пароль, затем войдите в систему и начните общаться.
Сообщения отправляются и успешно принимаются из БД, теперь у меня возникает проблема: «Как я могу получить имена пользователей соответствующих лиц в макете чата».
Кроме того, во время регистрации я сохранил имя пользователя и адрес электронной почты в базе данных внутри узла «Пользователи».
Это то, что я пробовал:
Это моя база данных Снимок экрана:
![This is My DB screenshot](https://i.stack.imgur.com/PMVcT.png)
Вот как выглядит приложение:
Снимок экрана приложения
Вот моя активность при регистрации:
private void DOSignup() {
final String get_name = name.getText().toString().trim();
final String get_email = email.getText().toString().trim();
String get_password = password.getText().toString().trim();
mAuth.createUserWithEmailAndPassword(get_email,get_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = mAuth.getCurrentUser();
Log.e("Current User", firebaseUser.toString());
// String name = firebaseUser.getDisplayName();
// Log.e("Name is :", name);
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Users");
GetUserName getUserName = new GetUserName(get_name,get_email);
String id = databaseReference.push().getKey();
databaseReference.child(id).setValue(getUserName);
Toast.makeText(getApplicationContext(), "Registration successful!", Toast.LENGTH_LONG).show();
// progressBar.setVisibility(View.GONE);
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
startActivity(intent);
}
else {
Toast.makeText(getApplicationContext(), "Registration failed! Please try again later", Toast.LENGTH_LONG).show();
// progressBar.setVisibility(View.GONE);
}
}
});
Класс модели для сохранения имени пользователя и электронной почты в БД:
public class GetUserName {
String username;
String email;
public GetUserName() {
}
public GetUserName(String username, String email) {
this.username = username;
this.email = email;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
}
Это мой класс модели для отображения Сообщения:
public class ChatModel {
String messages;
public ChatModel() {
}
public ChatModel(String messages) {
this.messages = messages;
}
public String getMessages() {
return messages;
}
}
Это мой chat_layout. xml:
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="Lacie"
android:textSize="18sp" />
<TextView
android:id="@+id/dateTime"
android:layout_margin="6dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="07-10-2016 (21:50:21)" />
</RelativeLayout>
<TextView
android:id="@+id/message_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/l1"
android:background="@drawable/my_message"
android:elevation="2dp"
android:padding="10dp"
android:text="Placeholder message"
android:textColor="#fff"
android:textSize="13sp" />
Это мой ChatAdapter:
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_layout,
parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull ChatModel model) {
ChatModel model1 = chatModelList.get(position);
GetUserName getUserName = new GetUserName();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
holder.messages.setText(model1.getMessages());
holder.userName.setText(databaseReference.getKey());
// holder.userName.setText(getUserName.getUsername());
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView messages,userName;
public ViewHolder(@NonNull View itemView) {
super(itemView);
messages = itemView.findViewById(R.id.message_body);
userName = itemView.findViewById(R.id.userName);
Пожалуйста, дайте ваши идеи о том, как можно я получаю соответствующие имена пользователей в виде "La cie" в chat_layout. Спасибо