Можно ли извлечь данные из этого объекта «Пользователи» в этот макет? - PullRequest
0 голосов
/ 16 января 2020

Я делаю это простое приложение для чата, где любой человек может зарегистрироваться, указав свое имя, адрес электронной почты и пароль, затем войдите в систему и начните общаться.

Сообщения отправляются и успешно принимаются из БД, теперь у меня возникает проблема: «Как я могу получить имена пользователей соответствующих лиц в макете чата».

Кроме того, во время регистрации я сохранил имя пользователя и адрес электронной почты в базе данных внутри узла «Пользователи».

Это то, что я пробовал:

Это моя база данных Снимок экрана:

This is My DB screenshot

Вот как выглядит приложение:

Снимок экрана приложения

Вот моя активность при регистрации:

    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. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...