Как обновить содержимое одной страницы в ViewPager без прокрутки до первой страницы? - PullRequest
0 голосов
/ 25 октября 2019

Я хочу обновить определенную страницу в ViewPager и остаться на этой странице, а не прокручивать до первой страницы

Я попытался обновить список данных и вызвать notifyDataSetChanged(), но он прокручивается допервая страница, ViewPager не имеет notifyItemChanged() как RecyclerView.

1 Ответ

0 голосов
/ 25 октября 2019

Некоторый код поможет лучше понять проблему, показывая, что вы пытаетесь обновить на странице и что вы называете notifyDataSetChanged() вкл.

Ваш вопрос и комментарий - две отдельные проблемы.

  1. Вы находитесь на вкладке Y и хотите обновить вкладку Y

  2. Вы находитесь на вкладке X и хотите обновить вкладку Y при переходе на нее.

Обычно для задачи 1 это может быть обработано в коде для этой вкладки (стр.)

Для проблемы 2 в целом, если вы хотите что-то сделать, когда выперейдите на страницу, затем вам нужно добавить OnPageChangeListener, но это может быть только началом того, что вам нужно сделать, чтобы обновить вкладку (страницу).

https://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageSelected(int)

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {

                if (position == 1 || position == 2)
                {
                    // do something here
                }

                if (position == 0)
                {
                    // do something else
                }
            }
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                // Code goes here
            }
            @Override
            public void onPageScrollStateChanged(int state) {
                // Code goes here
            }
        });

Но также без кода, я не могу сказать, если вы реализовали адаптер таким образом, что он позволяет активировать текущую страницу, когда notifyDataSetChanged() как

https://developer.android.com/reference/androidx/viewpager/widget/PagerAdapter.html#top_of_page

PagerAdapterподдерживает изменения набора данных. Изменения в наборе данных должны происходить в основном потоке и заканчиваться вызовом notifyDataSetChanged () аналогично адаптерам AdapterView, полученным из BaseAdapter. Изменение набора данных может включать добавление, удаление или изменение страниц. ViewPager будет поддерживать текущую страницу активной, если адаптер реализует метод getItemPosition (Object).

...