Просьба помочь с алгоритмом действий. Есть DrawerLayout по нажатию на его пункт отрывается фрагмент-1 в котором присутствует RecyclerView который выводит список пунктов. По нажатию пункта открывается новый фрагмент-2 в котором присутствует:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
и в котором адаптеру ViewPager передается название вкладок и количество создаваемых фрагментов
ViewPagerPhraseAdapter adapter = new ViewPagerPhraseAdapter(getFragmentManager());
for (int i = 0; i < tabList.length; i++) {
adapter.addFragment(new PhraseFragmentTabPager(), tabList[i]);
}
viewPager.setAdapter(adapter);
соответственно есть и фрагмент-3 (тот который показывает содержимое вкладок)
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_phrase_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" />
в котором адаптеру RecyclerView передается сгенерированный в коде фрагмента-3 список listItems показа исходя из названия текущей вкладки и в нем же обрабатываются нажатия на элементы списка.
Правильно ли генерировать список listItems в фрагменте-3 и обрабатывать нажатия в нем же?
В ответ на первый комментарий:
Дело в том, что мой алгоритм обработки нажатий на элементы RecyclerView базируется на использовании списка показа listItems, который генерируется в фрагменте-3, я получаю при нажатии на элемент его position в текущем отображении, потом вытягиваю из базы значения для обработки:
recyclerPhraseAdapter.setOnItemClickListener(new RecyclerPhraseAdapter.OnItemClickListener() {
@Override
public void onItemClick(View itemView, int position, View v) {
PhrasebookDatabase phrase = PhrasebookDatabase.findById(PhrasebookDatabase.class, listItems.get(position).getSequenceNumber()); // это мы получаем
switch (v.getId()) {
case R.id.starImageView:
phrase.setFavourites(false);
break;
case R.id.shareImageView:
openShareDialog(position);
break;
case R.id.phraseLinearLayout:
phrase.setHistory(true);
break;
}
}
});
И я получаю для себя проблему, так как я использую ViewPager то он генерирует для показа несколько экранов, и получается что на экране я вижу один список, но в использовать его не могу, так как ViewPagerсгенерировал уже список listItems для следующего экрана. И у меня выходит, что я при нажатии на элемент списка на текущем экране, получаю данные для элемента списка со следующего экрана.
Как то так!.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости