Как единоразово вытащить список объектов из Firebase?

В классе TargetListFragment.java я вытаскиваю список данных из Firebase и сразу добавляю их в адаптер для recycleview и нормально вывожу список фрагментов на экран:

private void updateUI() {

    ValueEventListener vListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if(listData.size() > 0)listData.clear();
            for (DataSnapshot ds : snapshot.getChildren()) {
                target = ds.getValue(Target.class);
                assert target != null;
                listData.add(target);
            }
            if (mAdapter == null) {
                mAdapter = new TargetAdapter(getContext(), listData);
                mCrimeRecyclerView.setAdapter(mAdapter);
            } else {
                mAdapter.setCrimes(listData);
                mAdapter.notifyDataSetChanged();
            }
            updateSubtitle();

        }

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

        }
    };
    mDatabase.addValueEventListener(vListener);
    
}

Но дальше при клике на конкретный элемент у меня открывается активити TargetPagerActivity.java с передачей данных в конкретное представление фрагмента:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target_pager);

    mViewPager = (ViewPager) findViewById(R.id.activity_crime_pager_view_pager);

    TargetListFragment targetListFragment = new TargetListFragment();

    targetListFragment.getmAdapter();

    mTargets = ?

    FragmentManager fragmentManager = getSupportFragmentManager();
    mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
        @Override
        public Fragment getItem(int position) {
            Target target = mTargets.get(position);
            String crimeId = target.getmId();
            return TargetFragment.newInstance(crimeId);
        }

        @Override
        public int getCount() {
            return mTargets.size();
        }
    });
    for (int i = 0; i < mTargets.size(); i++) {
        if (mTargets.get(i).getmId().equals(crimeId)) {
            mViewPager.setCurrentItem(i);
            break;
        }
    }
}

Как мне получить список mTargets здесь? Firebase при установке слушателя получает данные асинхронно, поэтому я никак не могу вытащить данный список наружу. Можно ли мне как-то единоразово вытащить данный список данных всех экземпляров класса модели и использовать повсеместно?


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