Как заполнить RecyclerView данными Firebase с помощью FirebaseUI в Android Studio
Firebase - одна из самых популярных онлайн-баз данных, используемых сегодня, и будет оставаться неизменной как минимум несколько лет. Firebase предлагает базу данных в реальном времени, которую можно использовать для хранения и извлечения данных в реальном времени для всех пользователей. В этом посте давайте подключим базу данных в реальном времени к приложению Android и покажем данные в RecyclerView с помощью FirebaseUI . FirebaseUI - это библиотека с открытым исходным кодом для Android, которая позволяет быстро подключать общие элементы пользовательского интерфейса к API Firebase. В этой статье мы собираемся осветить следующее.
- Как создать проект Firebase и вручную добавить данные для отображения в приложении.
- Как создать Android-проект и добавить в него поддержку Firebase и FirebaseUI.
- Как добавить RecyclerView в приложение для Android и отображать данные в базе данных Firebase Realtime.
Как создать проект Firebase и вручную добавить данные для отображения в приложении
- Шаг 1. Создайте проект Firebase
- Перейдите на https://console.firebase.google.com/u/0/.
- Войдите в Firebase со своей учетной записью Google, если вы еще не вошли в систему.
- Нажмите "Создать проект".

- Шаг 2. Дайте название проекту
- Напишите имя.
- Нажмите "Продолжить".

- Шаг 3. Отключите Google Analytics (в этом проекте нет необходимости делать это)
- Нажмите на переключатель.
- Щелкните Продолжить.

Firebase создаст для вас проект и откроет его для вас.
- Шаг 4: Создайте базу данных в реальном времени:
- Перейдите к варианту разработки на боковой панели.
- Щелкните База данных.
- Прокрутите вниз на новом экране и нажмите «Создать базу данных в базе данных в реальном времени».
- Выберите «Начать в тестовом режиме» (чтобы получить доступ для чтения и записи к базе данных).
- Щелкните включить.



- Шаг 5: Добавьте данные в базу данных, используя символ «+» в базе данных таким же образом, как показано на рисунке.

Note:
- All data values are stored in a string format for ease.
- Key-value can be any string but should not include spaces ” “.
- The same sub-keys should be present parent keys so that they can read by Recycler View without any error.
Как создать проект Android и добавить в него поддержку Firebase и FirebaseUI
- Шаг 1. Откройте Android Studio и создайте новый проект с именем « RecyclerView » с пустым действием.
- Шаг 2. Подключите проект Firebase к своему приложению.
- Шаг 3. Добавьте следующую зависимость в файл app / build.gradle , чтобы получить поддержку FirebaseUI и Firebase Realtime Database в приложении.
dependencies {// Dependency FirebaseUI for Firebase Realtime Databaseimplementation 'com.firebaseui:firebase-ui-database:6.2.1'// Dependency for Firebase REaltime Databaseimplementation 'com.google.firebase:firebase-database:19.3.1'}
Как добавить RecyclerView в приложение для Android и отображать данные в базе данных Firebase Realtime
- Шаг 1. Добавьте следующие зависимости, чтобы получить поддержку Cardview в приложении.
dependencies {// This dependency includes all material components of the android app.implementation 'com.google.android.material:material:1.1.0'} - Шаг 2: Сначала добавьте Recycler View в activity_main.xml и назовите его recycler1, вставьте указанный код в файл activity_main.xml для этого.
XML
<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recycler1"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#65E4A6"/></androidx.constraintlayout.widget.ConstraintLayout> - Шаг 3: Теперь давайте создадим еще один XML-файл в каталоге макета для хранения данных из базы данных конкретного человека. Мы назовем файл person.xml. Скопируйте следующий код в созданный файл.
XML
<?xmlversion="1.0"encoding="utf-8"?><androidx.cardview.widget.CardViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginHorizontal="10dp"android:layout_marginTop="10dp"android:layout_marginBottom="20dp"android:scrollbars="vertical"app:cardCornerRadius="20dp"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:text="First name: "android:textStyle="bold"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/><TextViewandroid:id="@+id/firstname"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:layout_marginEnd="16dp"android:text="TextView"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/textView1"app:layout_constraintTop_toTopOf="parent"/><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:text="Last name:"android:textStyle="bold"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView1"/><TextViewandroid:id="@+id/lastname"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:layout_marginEnd="16dp"android:text="TextView"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/textView2"app:layout_constraintTop_toBottomOf="@+id/firstname"/><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:layout_marginBottom="16dp"android:text="Age"android:textStyle="bold"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView2"/><TextViewandroid:id="@+id/age"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:layout_marginEnd="16dp"android:layout_marginBottom="16dp"android:text="TextView"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/textView3"app:layout_constraintTop_toBottomOf="@+id/lastname"/></androidx.constraintlayout.widget.ConstraintLayout></androidx.cardview.widget.CardView> - Шаг 4: После этого мы должны создать java-файл для извлечения и хранения данных определенного человека из базы данных и один за другим передавать их в Recycler View. Создайте person.java в той же папке, в которой Файл MainActivity.java присутствует. Вставьте в файл следующий код.
Джава
// Your package name can be different depending// on your project namepackagecom.example.recyclerview;personpublicclass{// Variable to store data corresponding// to firstname keyword in databaseprivateString firstname;// Variable to store data corresponding// to lastname keyword in databaseprivateString lastname;// Variable to store data corresponding// to age keyword in databaseprivateString age;// Mandatory empty constructor// for use of FirebaseUIpublicperson() {}// Getter and setter methodpublicString getFirstname(){returnfirstname;}publicvoidsetFirstname(String firstname){this.firstname = firstname;}publicString getLastname(){returnlastname;}publicvoidsetLastname(String lastname){this.lastname = lastname;}publicString getAge(){returnage;}publicvoidsetAge(String age){this.age = age;}} - Шаг 5: Чтобы отобразить данные из person.java в person.xml , мы должны создать класс адаптера. Создайте еще один файл java с именем personAdapter.java в той же папке, что и MainActivity.java, и вставьте следующий код.
Джава
packagecom.example.recyclerview;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.TextView;importandroidx.annotation.NonNull;importandroidx.recyclerview.widget.RecyclerView;importcom.firebase.ui.database.FirebaseRecyclerAdapter;importcom.firebase.ui.database.FirebaseRecyclerOptions;// FirebaseRecyclerAdapter is a class provided by// FirebaseUI. it provides functions to bind, adapt and show// database contents in a Recycler ViewpublicclasspersonAdapterextendsFirebaseRecyclerAdapter<person, personAdapter.personsViewholder> {publicpersonAdapter(@NonNullFirebaseRecyclerOptions<person> options){super(options);}// Function to bind the view in Card view(here// "person.xml") iwth data in// model class(here "person.class")@OverrideprotectedvoidonBindViewHolder(@NonNullpersonsViewholder holder,intposition,@NonNullperson model){// Add firstname from model class (here// "person.class")to appropriate view in Card// view (here "person.xml")holder.firstname.setText(model.getFirstname());// Add lastname from model class (here// "person.class")to appropriate view in Card// view (here "person.xml")holder.lastname.setText(model.getLastname());// Add age from model class (here// "person.class")to appropriate view in Card// view (here "person.xml")holder.age.setText(model.getAge());}// Function to tell the class about the Card view (here// "person.xml")in// which the data will be shown@NonNull@OverridepublicpersonsViewholderonCreateViewHolder(@NonNullViewGroup parent,intviewType){View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.person, parent,false);returnnewpersonAdapter.personsViewholder(view);}// Sub Class to create references of the views in Crad// view (here "person.xml")classpersonsViewholderextendsRecyclerView.ViewHolder {TextView firstname, lastname, age;publicpersonsViewholder(@NonNullView itemView){super(itemView);firstname= itemView.findViewById(R.id.firstname);lastname = itemView.findViewById(R.id.lastname);age = itemView.findViewById(R.id.age);}}} - Шаг 6: Затем мы вызвали базу данных и запросили данные из нее. Это будет сделано в самом MainActivity.java.
Джава
packagecom.example.recyclerview;importandroidx.appcompat.app.AppCompatActivity;importandroidx.recyclerview.widget.LinearLayoutManager;importandroidx.recyclerview.widget.RecyclerView;importandroid.os.Bundle;importcom.firebase.ui.database.FirebaseRecyclerOptions;importcom.google.firebase.database.DatabaseReference;importcom.google.firebase.database.FirebaseDatabase;importcom.google.firebase.database.Query;publicclassMainActivityextendsAppCompatActivity {privateRecyclerView recyclerView;personAdapteradapter;// Create Object of the Adapter classDatabaseReference mbase;// Create object of the// Firebase Realtime Database@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Create a instance of the database and get// its referencembase= FirebaseDatabase.getInstance().getReference();recyclerView = findViewById(R.id.recycler1);// To display the Recycler view linearlyrecyclerView.setLayoutManager(newLinearLayoutManager(this));// It is a class provide by the FirebaseUI to make a// query in the database to fetch appropriate dataFirebaseRecyclerOptions<person> options=newFirebaseRecyclerOptions.Builder<person>().setQuery(mbase, person.class).build();// Connecting object of required Adapter class to// the Adapter class itselfadapter =newpersonAdapter(options);// Connecting Adapter class with the Recycler view*/recyclerView.setAdapter(adapter);}// Function to tell the app to start getting// data from database on starting of the activity@OverrideprotectedvoidonStart(){super.onStart();adapter.startListening();}// Function to tell the app to stop getting// data from database on stoping of the activity@OverrideprotectedvoidonStop(){super.onStop();adapter.stopListening();}} - Шаг 7: Перед запуском проекта В AndroidManifest.xml необходимо указать разрешение ниже, чтобы получить доступ к Интернету:
“uses-permission android:name=”android.permission.INTERNET”
Выход: