Почему метод onDataChange запускается в конце?

Привет, я новичок. Не могу понять, почему в методе onDataChange список centuries заполняется как надо, но стоит обратиться к этому списку из другого места программы, то он оказывается пустым. Не до конца еще все понимаю в этой теме, но если я правильно смотрю по логам, то метод onDataChange запускается в самом конце. Подскажите, что нужно сделать для корректной работы?

Fragment code

public class HomeStartFragment extends Fragment implements recyclerInterface {
    private Context context;
    private View view;
    private RecyclerView rv;

    private List<Century> centuries;
    private List<Article> articles;
    private CenturiesAdapter centuriesAdapter;
    private ArticlesAdapter articlesAdapter;
    private DatabaseReference  mDataBaseCentury, mDataBaseArticle;

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public static HomeStartFragment newInstance(String param1, String param2) {
        HomeStartFragment fragment = new HomeStartFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i("MyTaggg", "ONCREATE STARTED");
        centuries = new ArrayList<>();
        articles = new ArrayList<>();
        mDataBaseCentury = FirebaseDatabase.getInstance().getReference("Century");
        mDataBaseArticle = FirebaseDatabase.getInstance().getReference("Article");
        Log.i("MyTaggg", "ListSize in onCreate = " + centuries.size());
        getCenturiesFromDB();
        getArticlesFromDB();
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }

    }

    private void getCenturiesFromDB(){
        Log.i("MyTaggg", "FUNC STARTED");
        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                Log.i("MyTaggg", "ONDATACHANGE is working");
                if(centuries.size()>0){centuries.clear();}
                for(DataSnapshot ds : snapshot.getChildren()){
                    Century century = ds.getValue(Century.class);
                    assert century !=null;
                    centuries.add(century);
                }

                Log.i("MyTaggg","ListSize in func = " + centuries.size());
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        };
        mDataBaseCentury.addValueEventListener(valueEventListener);
    }
    private void getArticlesFromDB(){
        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if(articles.size()>0){articles.clear();}

                for(DataSnapshot ds : snapshot.getChildren()){
                    Article article = ds.getValue(Article.class);
                    assert article != null;
                    articles.add(article);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        };
        mDataBaseArticle.addValueEventListener(valueEventListener);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        Log.i("MyTaggg", "ONCREATEVIEW STARTED");
        view = inflater.inflate(R.layout.century_view, container, false);
        rv = view.findViewById(R.id.recCenturyView);
        centuriesAdapter=new CenturiesAdapter(getContext(),centuries,articles,this);
        articlesAdapter = new ArticlesAdapter(getContext(),articles,this);
        rv.setAdapter(centuriesAdapter);
        rv.setLayoutManager(new LinearLayoutManager(getContext()));
        Log.i("MyTaggg", "ListSize in onCreateView = " + centuries.size());
        return view;
    }

}

Log

2023-06-09 20:20:50.404  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ONCREATE STARTED
2023-06-09 20:20:50.466  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ListSize in onCreate = 0
2023-06-09 20:20:50.466  1979-1979  MyTaggg       com.example.vitsebskhistory        I  FUNC STARTED
2023-06-09 20:20:50.488  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ONCREATEVIEW STARTED
2023-06-09 20:20:50.581  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ListSize in onCreateView = 0
2023-06-09 20:20:51.606  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ONDATACHANGE STARTED
2023-06-09 20:20:51.611  1979-1979  MyTaggg       com.example.vitsebskhistory        I  ListSize in func = 8

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