FragmentStatePageAdapter и Firestore - PullRequest
       4

FragmentStatePageAdapter и Firestore

0 голосов
/ 04 октября 2019

У меня есть вкладка с приложением фрагмента и для управления страницами, я использую FragmentStatePageAdapter. При создании экземпляра моего класса фрагмента в методе getItem (int position) в классе адаптера я хочу передать данные из Firestore в конструктор. До сих пор у меня ничего не получалось.

Когда я жестко кодирую данные в классе моего адаптера, он отлично работает. Но это все.

Мой класс фрагмента выглядит примерно так:

public class MyFragment extends Fragment {
    //constructor looks like this
    public static MyFragment newInstance(String id, String txt){.....}

    //my model class is in here too and looks like this
    public static final class Entry {
        private String txt;
        private String id;

        public Entry(String txt, String id) {
            this.txt = txt;
            this.id = id;
        }

        public String getTxt() {
            return text;
        }

        public String getId() {
            return id;
        }
    }
}

Мой класс адаптера выглядит следующим образом:

public class MyPageAdapter extends FragmentStatePageAdapter {
    private static final List<MyFragment.Entry> FIRE_LIST;

    //if i hardcode, it works perfectly: like below
    static {
        List<MyFragment.Entry> list = new ArrayList<MyFragment.Entry>();
        list.add(new MyFragment.Entry("txt1", "id1"));
        list.add(new MyFragment.Entry("txt2", "id2"));
        FIRE_LIST = Collections.unmodifiableList(list);
    }

    //constructor:
    private final Context context;
    public MyPageAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context = context;
    }
    @Override
    public Fragment getItem(int position) {
        String id = FIRE_LIST.get(position).getId();
        String txt = FIRE_LIST.get(position).getTxt();
        MyFragment myFragment = MyFragment.newInstance(id, txt);

        return myFragment;
    }

    @Override
    public int getCount() {
        return FIRE_LIST.size();
    }
}

Теперь рассмотрим, у меня есть коллекцияв Firebase Firestore я называю «пост». В посте есть документы на ключи txt и id. Я хочу вместо жесткого кодирования, который я делал выше, вместо этого я хочу заполнить FIRE_LIST данными из моей коллекции сообщений. Как мне сделать это? Надеюсь, это достаточно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...