Как я могу обновить вкладку, когда она становится видимой для пользователя? - PullRequest
0 голосов
/ 07 декабря 2018

Я использую адаптер пейджера состояния фрагментов для создания различных фрагментов.

В моем приложении начальные вкладки - это когда пользователь вводит данные, а на последней вкладке отображается отчет на основеначальные вкладки.

Проблема в том, что когда я попадаю на вкладку отчета, все отображается правильно, за исключением информации о предыдущих вкладках.Похоже, что он создает вкладку до того, как она станет видимой.

Есть ли способ заставить загрузку только вкладки отчета, когда она станет видимой?

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018
    OnPageChangeListener myOnPageChangeListener = new OnPageChangeListener(){ 
@Override public void onPageScrollStateChanged(int state) {
 //Called when the scroll state changes.

 } 

@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 //This method will be invoked when the current page is scrolled, //either as part of a programmatically initiated smooth scroll //or a user initiated touch scroll. 
} 


@Override public void onPageSelected(int position) {
//This method will be invoked when a new page becomes selected. 

        textMsg.append("onPageSelected:" + position + "\n"); }};

Теперь добавьте этот слушатель в ваш пейджер

viewPager.setOnPageChangeListener(myOnPageChangeListener)
0 голосов
/ 10 декабря 2018

Чтобы обновить вкладку, мне пришлось уведомить об изменении набора данных для адаптера, а затем сбросить его на пейджере просмотра.

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            if(tab.getPosition() == areas.size()){
                roundPagerAdapter.notifyDataSetChanged();
                viewPager.setAdapter(null);
                viewPager.setAdapter(roundPagerAdapter);
                viewPager.setCurrentItem(tab.getPosition());
            } else {
                viewPager.setCurrentItem(tab.getPosition());
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
0 голосов
/ 07 декабря 2018

Я полагаю, что вы можете переопределить setUserVisibleHint метод, чтобы получать уведомления о видимости фрагмента

https://developer.android.com/reference/android/support/v4/app/Fragment#setuservisiblehint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...