Задать вопрос

ViewPager как обновить?

Есть фрагмент, на нем находится viewpager. У viewpager есть два фрагмента. Где на втором фрагменте еще один viewpager( имеет тоже 2 фрагмента). Как сделать так чтоб в первом viewpager на первом фрагменте обновлять данные для второго фрагмента(viewpager).
Использую notifyDataSetChanged();, но он обновляет весь адаптер, а надо только фрагмент

Сделал пока так. Но данный подход не подходит, потому что обновляет весь адаптер

public class Fragment_adapter_history extends Fragment  {







    private SectionsPagerAdapter mSectionsPagerAdapter;
    private ViewPager mViewPager;
    static final String TAG = "myLogs";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_history_adapter, container, false);
        mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
        mViewPager = (ViewPager) view.findViewById(R.id.vpPager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                Log.d(TAG, "onPageSelected, position = " + position);
                mSectionsPagerAdapter.notifyDataSetChanged();
            }

            @Override
            public void onPageScrolled(int position, float positionOffset,
                                       int positionOffsetPixels) {
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

        return view;
    }


 public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
        public int getItemPosition (Object object) { return POSITION_NONE; }

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    FragmentTransaction fragmentTransaction;
                    fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                    Fragment_history fragment_history = new Fragment_history();
                    fragmentTransaction.commit();
                    return fragment_history;
                case 1:
                    FragmentTransaction fragmentTransaction2;
                    fragmentTransaction2 = getActivity().getSupportFragmentManager().beginTransaction();
                    Fragment_izbranoe fragment_izbranoe = new Fragment_izbranoe();
                    fragmentTransaction2.commit();
                    return fragment_izbranoe;

                default:
                    return null;
            }
        }


        @Override
        public int getCount() {
            // Show 3 total pages.
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return "История";
                case 1:
                    return "Избранное";
            }
            return null;
        }
    }


}
  • Вопрос задан
  • 374 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
03 февр. 2025, в 22:54
20000 руб./за проект
03 февр. 2025, в 21:56
2000 руб./за проект