android firebase чат из хелпа не заработал

Прытался по туториалу https://code.tutsplus.com/ru/tutorials/how-to-create-an-android-chat-app-using-firebase--cms-27397 сделать чат на android studio 2021.1.1 path 1. Вопросов осталось от изучения этой темы больше, чем ответов :) Может кто подскажет. В коде из статьи, вот кусок который должен запускать экран входа и регистрации, но если AuthUI это FirebaseAuth у меня ругается на .createSignInIntentBuilder() что не знает такой команды. сделал временно через signInWithEmailAndPassword(emailAddress,password) для регистрации юзера к базе. Соответственно окно регистрации надо самому рисовать.

if(FirebaseAuth.getInstance().getCurrentUser() == null) {
    // Start sign in/sign up activity
    startActivityForResult(
            AuthUI.getInstance()
            .createSignInIntentBuilder()
            .build(),
            SIGN_IN_REQUEST_CODE
    );

Так же на команду private FirebaseListAdapter adapter; андройд говорит что не знает такого адаптера.

FirebaseUI имеет очень удобный класс под названием FirebaseListAdapter, что значительно снижает попытки, необходимые для заполнения ListView, используя данные, имеющиеся в базе данных Firebase. Сейчас мы будем использовать его для извлечения и отображения всех объектов ChatMessage, которые присутствуют в базе данных.

Сделал через обычный перебор всех данных из базы в цикле и сохранение этого в ArrayList Условно чат я написал, но думаю, что неэффективными методами. В build.gradle андройд сам добавил нужные строки по firebase

**MainActivity.java**
package com.example.mychat03;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.FirebaseDatabase;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;



public class MainActivity<bucCloseOnClickList> extends AppCompatActivity {
    private FirebaseAuth mAuth;
    String TAG="TAVKA";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FloatingActionButton fab = (FloatingActionButton)findViewById(R.id.fab);
        fab.setOnClickListener(setOnClickListenerFAB);
        FirebaseAuth auth = FirebaseAuth.getInstance();
        if (auth.getCurrentUser() != null) {
            Log.d(TAG, "Already signed in");
        } else {
            Log.d(TAG, "not signed");
            String emailAddress = "[email protected]";
            String password = "123456";
            auth.signInWithEmailAndPassword(emailAddress,password)
                    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if (task.isSuccessful()) {
                                // User signed in successfully
                                Log.d(TAG, "User signed in successfully");
                            }
                        }
                    });
        }
        // Load chat room contents
        displayChatMessages();

    }

    void displayChatMessages(){
        FirebaseDatabase
                .getInstance()
                .getReference()
                .get()
                .addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DataSnapshot> task) {
                        ListView lv =(ListView) findViewById(R.id.list_of_messages);
                        if (task.isComplete()) {
                            HashMap<String, String> result = (HashMap) task.getResult().getValue();
                            //Выбираем все ключи:
                           // for (String key : result.keySet()) {  Log.d(TAG, "Key: " + key); }
                            List<String> messageStrings = new ArrayList<String>();
                            for (DataSnapshot data : task.getResult().getChildren()){
                                //Log.d(TAG,String.valueOf(data.getValue()));
                                String Chattext = data.child("messageText").getValue(String.class);
                                String Chatuser = data.child("messageUser").getValue(String.class);
                                Long messageTime = data.child("messageTime").getValue(Long.class);
                                SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
                                String dateString = formatter.format(new Date(messageTime));
                                messageStrings.add("("+dateString+") "+Chatuser+": "+Chattext);
                            }
                            ArrayAdapter adapter_xz = new ArrayAdapter<String>(MainActivity.this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, messageStrings);
                            ListView listView = (ListView) findViewById(R.id.list_of_messages);
                            listView.setAdapter(adapter_xz);
                        } else {
                            Log.d(TAG, "FB onComplete: Fail!!!");
                        }
                    }
                });
    }




    View.OnClickListener setOnClickListenerFAB= new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText input = (EditText)findViewById(R.id.inputTextChat);
            // Read the input field and push a new instance
            // of ChatMessage to the Firebase database
            Task<Void> voidTask = FirebaseDatabase.getInstance()
                    .getReference()
                    .push()
                    .setValue(new ChatMessage2(input.getText().toString(),
                            FirebaseAuth.getInstance()
                                    .getCurrentUser()
                            //        .getDisplayName()
                            .getEmail()
                            )
                    );
            input.setText("");
            displayChatMessages();
        }
    };


    View.OnClickListener bucCloseOnClickList = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mAuth.getInstance().signOut();
            Log.d(TAG, "User signOut ");
            finish();
        }
    };


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menu_sign_out) {
            mAuth.getInstance().signOut();
            Log.d(TAG, "User signOut ");
            finish();
        }
        return true;
    }

    private class ChatMessage2 {
        private String messageText;
        private String messageUser;
        private long messageTime;
        public ChatMessage2(String messageText, String messageUser) {
            this.messageText = messageText;
            this.messageUser = messageUser;
            messageTime = new Date().getTime();
        }
        public ChatMessage2(){
        }
        public String getMessageText() {
            return messageText;
        }
        public void setMessageText(String messageText) {
            this.messageText = messageText;
        }
        public String getMessageUser() {
            return messageUser;
        }
        public void setMessageUser(String messageUser) {
            this.messageUser = messageUser;
        }
        public long getMessageTime() {
            return messageTime;
        }
        public void setMessageTime(long messageTime) {
            this.messageTime = messageTime;
        }
    }
}


**build.gradle(app)**
plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.example.mychat03"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.5.0'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'com.google.firebase:firebase-analytics:21.1.1'
    implementation 'com.google.firebase:firebase-auth:21.0.8'
    implementation 'com.google.android.gms:play-services-auth:20.1.0'
    implementation 'com.google.firebase:firebase-database:20.0.6'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
/////////
    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:30.4.1')

}

Ответы (0 шт):