Как повлиять на элемент в ViewPager, когда дело доходит до экрана

Я создаю приложение галереи. У меня есть внутренний класс в MainActivity, который расширяет PagerAdapter:

private class ImagePagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        LinearLayout llImage = (LinearLayout) getLayoutInflater().inflate(R.layout.view_pager_item, null);

        SubsamplingScaleImageView draweeView = (SubsamplingScaleImageView) llImage.getChildAt(0);
        draweeView.setImage(ImageSource.uri(images.get(position)));

        container.addView(llImage, 0);

        return llImage;

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((LinearLayout) object);
    }
}

Элементы создаются динамически. Мое приложение позволяет пользователю увеличивать изображения на этих страницах (элементах), а ViewPager сохраняет состояние масштабирования, когда я перехожу к следующей странице. Но когда я возвращаюсь на предыдущую страницу, я хочу видеть картинку в размере по умолчанию без каких-либо изменений.

Как я могу повлиять на сохраненные элементы, когда они снова появятся на экране, учитывая, что эти элементы были созданы динамически?


person Oleh Liskovych    schedule 05.07.2015    source источник


Ответы (1)


У тебя тут что-то не так. Рассмотрим следующее:

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

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

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    public void onPageSelected(int position) {
        // reset the zoom
    }
}); 
person Ahmed Basyouny    schedule 05.07.2015
comment
У меня все в порядке. Спасибо за совет, попробую так сделать. - person Oleh Liskovych; 05.07.2015