Не отображаются данные в RecyclerView из Firebase
Добавил RecyclerView в котором будут отображаться данные из DatabaseReference. Код составил вродебы правильно, но список почему-то не отображается. Ошибок не выдаёт, помогите разобраться в чём проблема
Данные которые находиться в Activity
DatabaseReference db;
FirebaseHelper helper;
CustomAdapter2 adapter;
RecyclerView Rec_E_test;
Rec_E_test = findViewById(R.id.Rec_E_test);
db = FirebaseDatabase.getInstance().getReferenceFromUrl("https://******");
helper = new FirebaseHelper(db);
adapter = new CustomAdapter2(this, helper.retrieve());
Rec_E_test.setAdapter(adapter);
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String s) {
Rec_E_test.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, String s) {
Rec_E_test.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
Rec_E_test.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, String s) {
Rec_E_test.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Rec_E_test.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
});
FirebaseHelper
public class FirebaseHelper {
DatabaseReference db;
Boolean saved;
ArrayList<Spacecraft> spacecrafts = new ArrayList<>();
public FirebaseHelper(DatabaseReference db) {
this.db = db;
}
public Boolean save(Spacecraft spacecraft) {
if (spacecraft == null) {
saved = false;
} else {
try {
db.child("Spacecraft").push().setValue(spacecraft);
saved = true;
} catch (DatabaseException e) {
e.printStackTrace();
saved = false;
}
}
return saved;
}
private void fetchData(DataSnapshot dataSnapshot) {
Spacecraft spacecraft = dataSnapshot.getValue(Spacecraft.class);
spacecrafts.add(spacecraft);
}
public ArrayList<Spacecraft> retrieve() {
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return spacecrafts;
}
}
Мой Adapter
public class CustomAdapter2 extends RecyclerView.Adapter<CustomAdapter2.CustomAdapter2ViewHolder> {
public ArrayList<Spacecraft> spacecrafts;
Context c;
public CustomAdapter2(Context c, ArrayList<Spacecraft> spacecrafts) {
this.c = c;
this.spacecrafts = spacecrafts;
}
@NonNull
@Override
public CustomAdapter2ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.model, parent, false);
return new CustomAdapter2ViewHolder(v);
}
public static class CustomAdapter2ViewHolder extends RecyclerView.ViewHolder {
@SuppressLint("StaticFieldLeak")
public ImageView image;
public TextView headTxt, subheadTxt, detailTxt;
public CardView card;
public CustomAdapter2ViewHolder(View itemView) {
super(itemView);
image = itemView.findViewById(R.id.image);
headTxt = itemView.findViewById(R.id.headTxt);
subheadTxt = itemView.findViewById(R.id.subheadTxt);
detailTxt = itemView.findViewById(R.id.detailTxt);
card = itemView.findViewById(R.id.card);
}
}
@Override
public void onBindViewHolder(@NonNull CustomAdapter2ViewHolder holder, int position)
{
Spacecraft spacecraftsItem = spacecrafts.get(position);
holder.headTxt.setText(spacecraftsItem.getHead());
holder.subheadTxt.setText(spacecraftsItem.getSubhead());
holder.detailTxt.setText(spacecraftsItem.getDetail());
}
@Override
public int getItemCount() {return spacecrafts.size();}
}