Есть фрагмент с TabLayout
с ViewPager
, который содержит в себе RecyclerView
на каждой вкладке. При обновлении в RecyclerView
через adapter.notifyDataSetChanged()
(который обновляет вид), вкладки (табы) смещаются и пропадает текущая вкладка, хотя сам RecyclerView
отображается верный. Проблема проявляется если вкладок больше чем 10 штук, если меньше то проблемы нет.
В чем может быть проблема?
вот код фрагмента:
public class HardPhraseFragmentTab extends Fragment {
private View myView;
private String[] tabList;
private static final String TAG = "myLogs";
final String DIRECTION = "direction";
final String CURRENTNAMECLICK = "currentNameCkick";
private SharedPreferences sharedPreferences;
private TabLayout tabLayout;
private ViewPager viewPager;
private static ViewPagerHardAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.fragment_hard_tab, container, false);
Log.d(TAG, "HardPhraseFragmentTab");
setHasOptionsMenu(true); // без этого меню не показывается
sharedPreferences = this.getActivity().getPreferences(Context.MODE_PRIVATE); // подключаем настройки
getActivity().setTitle(R.string.nav_hardPhrase); // меняем название заголовка
// получаем массив наименований табов
tabList = getResources().getStringArray(R.array.alphabet);
tabLayout = (TabLayout) myView.findViewById(R.id.tabsHard);
viewPager = (ViewPager) myView.findViewById(R.id.viewPagerHard);
adapter = new ViewPagerHardAdapter(getChildFragmentManager());
for (int i = 0; i < tabList.length; i++) {
adapter.addFragment(new HardPhraseFragmentTabPager(), tabList[i]);
}
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
return myView;
}
// обновление экрана
public static void setAdapter() {
adapter.notifyDataSetChanged();
}
вот код адаптера:
public class ViewPagerHardAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList = new ArrayList<>();
private List<String> fragmentTitleList = new ArrayList<>();
public ViewPagerHardAdapter(FragmentManager fm) {
super(fm);
}
// Возвращает фрагмент для отображения для этой страницы
@Override
public Fragment getItem(int position) {
return HardPhraseFragmentTabPager.newInstance(position, fragmentTitleList.get(position));
}
// Возвращает общее количество страниц
@Override
public int getCount() {
return fragmentList.size();
}
// Возвращает заголовок страницы для верхнего индикатора
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitleList.get(position);
}
public void addFragment(Fragment fragment, String title) {
fragmentList.add(fragment);
fragmentTitleList.add(title);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я создаю два файла excel и word, в них записываю инфу, все это проделываю с помощью Apache POIТеперь мне необходимо вложить первый файл во второй, но я не знаю...
Имеется поле для ввода и кнопка, если мы не заполним данное поле и нажмем на кнопку, выводится вот такая ошибка в виде подсказки, как на скриншоте...
Как мне получить текущую позицию при перетаскиваниии: