Не отображается кастомный adapter в List на базе Firebase
Пытаюсь вывести данные из Firebase, но выдает пустой лист. Не понимаю в че причина, так как делал все по гайду. Помогите пожалуйста, уже не понимаю, что мне делать.
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
personAdapter
adapter; // Create Object of the Adapter class
DatabaseReference mbase; // Create object of the
// Firebase Realtime Database
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create a instance of the database and get
// its reference
mbase
= FirebaseDatabase.getInstance().getReference();
recyclerView = findViewById(R.id.recycler1);
// To display the Recycler view linearly
recyclerView.setLayoutManager(
new LinearLayoutManager(this));
// It is a class provide by the FirebaseUI to make a
// query in the database to fetch appropriate data
FirebaseRecyclerOptions<person> options
= new FirebaseRecyclerOptions.Builder<person>()
.setQuery(mbase, person.class)
.build();
// Connecting object of required Adapter class to
// the Adapter class itself
adapter = new personAdapter(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
@Override protected void onStart()
{
super.onStart();
adapter.startListening();
}
// Function to tell the app to stop getting
// data from database on stopping of the activity
@Override protected void onStop()
{
super.onStop();
adapter.stopListening();
}
}
Класс адаптера
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
// FirebaseRecyclerAdapter is a class provided by
// FirebaseUI. it provides functions to bind, adapt and show
// database contents in a Recycler View
public class personAdapter extends FirebaseRecyclerAdapter<
person, personAdapter.personsViewholder> {
public personAdapter(
@NonNull FirebaseRecyclerOptions<person> options)
{
super(options);
}
// Function to bind the view in Card view(here
// "person.xml") iwth data in
// model class(here "person.class")
@Override
protected void
onBindViewHolder(@NonNull personsViewholder holder,
int position, @NonNull person 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
@Override
public personsViewholder
onCreateViewHolder(@NonNull ViewGroup parent,
int viewType)
{
View view
= LayoutInflater.from(parent.getContext())
.inflate(R.layout.person, parent, false);
return new personAdapter.personsViewholder(view);
}
// Sub Class to create references of the views in Crad
// view (here "person.xml")
class personsViewholder
extends RecyclerView.ViewHolder {
TextView firstname, lastname, age;
public personsViewholder(@NonNull View itemView)
{
super(itemView);
firstname
= itemView.findViewById(R.id.firstname);
lastname = itemView.findViewById(R.id.lastname);
age = itemView.findViewById(R.id.age);
}
}
}
Класс person
public class person
{
// Variable to store data corresponding
// to firstname keyword in database
private String firstname;
// Variable to store data corresponding
// to lastname keyword in database
private String lastname;
// Variable to store data corresponding
// to age keyword in database
private String age;
// Mandatory empty constructor
// for use of FirebaseUI
public person() {}
// Getter and setter method
public String getFirstname()
{
return firstname;
}
public void setFirstname(String firstname)
{
this.firstname = firstname;
}
public String getLastname()
{
return lastname;
}
public void setLastname(String lastname)
{
this.lastname = lastname;
}
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
}
Ответы (1 шт):
Автор решения: unknown
→ Ссылка
В AndroidManifest.xml добавили
uses-permission android:name="android.permission.INTERNET" ?