如何在通过pageradapter设置后添加/更改viewpager的imageview?

时间:2017-10-02 02:26:51

标签: android android-viewpager imageview android-pageradapter

所以,这是我的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);
}
}

我想知道如何添加更多图像视图或更改pageadapter创建的现有图像视图的图像。我已经尝试过使用ViewPager.addView("一些新的imageview")但没有发生任何事情。我可以找到这样的情况。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

做两件事:

(1)通过添加或删除数据来更改数据。由于您正在为sliderImagesId使用int []数组,因此您已再次声明并初始化整个数组。例如,考虑使用类似ArrayList的集合。然后你可以这样做:sliderList.add(R.drawable.newSlide)

(2)致电adapter.notifyDataSetChanged()。它告诉适配器它的数据已经改变。就是这样。