【问题标题】:Show images using viewpager使用 viewpager 显示图像
【发布时间】:2016-10-12 05:16:13
【问题描述】:

我正在使用 viewpager 显示可绘制文件夹中的图像 图片命名为: a1 a2 一个3... 到a700 所以我使用这段代码来获取 viewpager 中的所有图像

mImages=new int[700];
    for (int i = 0; i < 700; i++) {
        mImages[i] = getResources()
            .getIdentifier("a"+i, "drawable",     getPackageName());    }

            ImagePagerAdapter   adapter =     new ImagePagerAdapter();
    viewPager.setAdapter(adapter);

它工作正常并显示所有图像 但是当我使用此代码时,viewpager 中没有第一张图片 第一个图像出现在第一次浏览器滑动后 为什么? 如何在 viewpager 中从 a1 开始

这是适配器

private class ImagePagerAdapter         extends PagerAdapter {

    @Override
    public int getCount() {
        return mImages.length;
    }
    public int getImageId(int pos){return mImages[pos];}
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((ImageView) object);
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
    }

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


        Context context = MainActivity.this;
        final  TouchImageView imageView = new TouchImageView(context);



        int padding = context.getResources().getDimensionPixelSize(
            R.dimen.padding_medium);
        imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setImageResource(mImages[position]);



        ((ViewPager) container).addView(imageView, 0);

        return imageView;

}

我在 mainactivity 中使用了这个角色

public class MainActivity extends    Activity {
 ViewPager  viewPager;
  public int[] mImages = new int[]{
R.drawable.startpic};

【问题讨论】:

  • 从 1 开始循环到
  • 不工作我试试
  • @Vij 对于int[700] 应该是&lt; 700
  • 为什么不能使用position 变量来获取适配器中的资源?我们可以看看适配器类吗?
  • 好的,我会复制它

标签: android android-viewpager


【解决方案1】:

试试

mImages=new int[700];
for (int i = 0; i < 700; i++) {
    mImages[i] = getResources()
        .getIdentifier("a"+ (i + 1), "drawable",     getPackageName());    }

        ImagePagerAdapter   adapter =     new ImagePagerAdapter();
viewPager.setAdapter(adapter);

您没有名为 a0 的图像,因此请确保您不是从 a0 开始。根据您目前的逻辑,我认为您最后也会缺少 a700(您的 for 循环仅在 i 为 699 时才执行)。

【讨论】:

  • 你明白我在 for 循环中的意思吗?我的意思是我看不到您的其余代码,所以我不确定为什么图像不会显示,但是如果您问题中的代码正常工作并且只跳过第一张图像,那么问题似乎很明显,这是因为i 整数从 0 开始,您的文件名为 a1~a700。
  • 好的,所以我会尝试将图片命名为 a0 并停在 699 并告诉你是否工作
  • noooooo 那不是我的意思......如果你看不到任何照片,大声笑一定是别的东西。 a1~a700 将在我的初始响应中使用 (i + 1) 修复
  • 你从0 to 699循环i,但你的图像被命名为a1 - a700,所以你试图获得标识符为a0的第一张图像!但是你有a1
  • 第一次如果 i = 0 然后 "a"+i = "a0" 使用循环 i 从 1 到 700 -> 像这样:i=1; i&lt;=700; i++
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
相关资源
最近更新 更多