简体   繁体   中英

How to add/change imageviews of an viewpager after setting them through pageradapter?

So, this is the code of my pageradapter:

public class AndroidImageAdapter extends PagerAdapter {
Context mContext;

AndroidImageAdapter(Context context) {
    this.mContext = context;
}

@Override
public int getCount() {
    return sliderImagesId.length;
}

public int[] getSliderImagesId() {
    return sliderImagesId;
}

public void setSliderImagesId(int[] sliderImagesId) {
    this.sliderImagesId = sliderImagesId;
}

public int[] sliderImagesId = new int[]{
        R.drawable.ic_account, R.drawable.ic_add_location_black_24dp,
        R.drawable.ic_directions_bus_blue_24dp
};

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

@Override
public Object instantiateItem(ViewGroup container, int i) {
    ImageView mImageView = new ImageView(mContext);
    mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    mImageView.setImageResource(sliderImagesId[i]);
    ((ViewPager) container).addView(mImageView, 0);
    return mImageView;
}

@Override
public void destroyItem(ViewGroup container, int i, Object obj) {
    ((ViewPager) container).removeView((ImageView) obj);
}
}

I would like to know how to add more imageviews or change the image of the existing imageviews created by the pageadapter. I've already tried using ViewPager.addView("some new imageview") but nothing happened. I could find any situation like this. Could you help me?

Do two things:

(1) Change your data by adding or removing to it. Since you are using an int[] array for your sliderImagesId you have declare and initialize the whole array again. Consider using a collection like ArrayList , for example, instead. Then you could just do this: sliderList.add(R.drawable.newSlide) .

(2) Call adapter.notifyDataSetChanged() . It tells the adapter that its data has changed. And that's it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM