Просьба помочь с алгоритмом действий. Есть 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 для следующего экрана. И у меня выходит, что я при нажатии на элемент списка на текущем экране, получаю данные для элемента списка со следующего экрана.
Как то так!.
Продвижение своими сайтами как стратегия роста и независимости