Вызовы базы данных Firebase не являются асинхронными, что означает, что строки ниже запроса будут выполнены до того, как вы получите ответ от firebase.
Поэтому обновите ваш код, как показано ниже, чтобы он работал как положено.
RecyclerViewAdapter adapter;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_dashboard, container, false);
database = FirebaseDatabase.getInstance();
ArrayList<Item> arr = new ArrayList<Item>();
adapter = new RecyclerViewAdapter(getContext(), arr);// Here the ArrayList arr is empty
RecyclerView recyclerView = view.findViewById(R.id.dashboardRecyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
DatabaseReference reference = database.getReference("NoticeBoard");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
String text1 = (String) singleSnapshot.child("Text1").getValue();
String text2 = (String) singleSnapshot.child("Text2").getValue();
arr.add(new Item(text1, text2));
}
if(adapter != null){
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return view;
}
Примечания: Рекомендуется устанавливать данные после того, как представление было создано во фрагментах. Для этого вы можете использовать onViewCreated()
метод фрагмента.