странное поведение FragmentPagerAdapter

280
09 апреля 2017, 01:42

Есть фрагмент с 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;
}

}

READ ALSO
Как вложить один файл в другой, то есть .xlsx в .docx. Подскажите библиотечку или способ)

Как вложить один файл в другой, то есть .xlsx в .docx. Подскажите библиотечку или способ)

Я создаю два файла excel и word, в них записываю инфу, все это проделываю с помощью Apache POIТеперь мне необходимо вложить первый файл во второй, но я не знаю...

249
Реализация всплывающей подсказки

Реализация всплывающей подсказки

Имеется поле для ввода и кнопка, если мы не заполним данное поле и нажмем на кнопку, выводится вот такая ошибка в виде подсказки, как на скриншоте...

227
Chat Firebase Toast Fragment

Chat Firebase Toast Fragment

Проблема c:

327
Как мне получить текущую позицию при перетаскиваниии в RecyclerView с анимацией Dragging

Как мне получить текущую позицию при перетаскиваниии в RecyclerView с анимацией Dragging

Как мне получить текущую позицию при перетаскиваниии:

341