@Horoko

Как сменить контент ImageView в ViewPager Android?

Код адаптера
public class ContactPagerAdapter extends PagerAdapter {

        public ContactPagerAdapter() {
            super();
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
         
            pos = position;
            if (uris.size()!=0){
               photoImage = new ImageView(getApplicationContext());
                photoImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
                photoImage.setImageURI(uris.get(position));
   
            container.addView(photoImage, 0);
            photoImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

            }
            });}
            return photoImage;
        }


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

        @Override
        public boolean isViewFromObject(View v, Object o) {
            return v == ((View) o);
        }
    }

И метод который фото меняет
public static void changePhoto(int id) {
         photoImage.setImageURI(uris.get(id));
        adapter.notifyDataSetChanged();

Изменить фото в ViewPager таким способом можно только первый и последний элемент.
Сабж. Как поменять любой элемент, а именно ImageView, а не только последний и первый.
  • Вопрос задан
  • 882 просмотра
Решения вопроса 1
gadfi
@gadfi
https://gamega.org
если я правильно понимаю у вас uris это коллекция которая хранит uri картинок
просто меняйте значение нужного вам элемента этой коллекции
не нужно пытаться изменить картинку руками, это произойдет в момент перерисовки когда вы вызываете
notifyDataSetChanged
зы используйте что то для асинхронной загрузки, например picasso, иначе будет тормозить
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Horoko Автор вопроса
Спасибо за ответы, решил что в моей задаче будет проще менять листать страницу ViewPager методом setCurrentItem(), чем пытаться изменить контент костылями дабы достич того же результата, что и предоставляет этот метод. Один вопрос по библиотеке Picasso, при вызове Picasso.with(getAplicationContext).load(uris.get(position)).into(photoImage); он ничего не выводит в ImageView. Почему? неправильный контекст?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы