ViewPager以意想不到的方式运行

时间:2013-08-20 05:53:56

标签: android android-viewpager

我的目标是在我的应用中实施指南/操作方法 - 应用活动,用户可以在预定义的一组视图之间切换。所以,我决定使用ViewPager

这就是我在GuideActivity中所做的:

mPager = (ViewPager) findViewById(R.id.pager);
mAdapter = new GuideAdapter(getBaseContext());
mPager.setAdapter(mAdapter);

这是我PagerAdapter的实现:

class GuideAdapter extends PagerAdapter {

    private Context context;  
    protected static final int[] SLIDES = new int[] { 
        R.drawable.page1, R.drawable.page2, R.drawable.page3 };

    public GuideAdapter(Context context) {
        this.context = context;
    }
    @Override
    public View instantiateItem(ViewGroup container, int position) {
        ImageView image = new ImageView(container.getContext());
        image.setImageResource(SLIDES[position]);
        container.addView(image, LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT);
        return image;
    }

    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        ((ViewPager) collection).removeView((View) view);
    }
    @Override
    public int getCount() {
        return SLIDES.length;
    }
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return true;
    }
}

问题是,图像是相互重叠绘制的。如果我从左向右滚动,我看不到图像。如果我向后滚动,显示一秒钟的图像就会消失。 底线:我的ViewPager以意想不到的方式运行!

我在PagerAdapter中覆盖了四个必需的方法。我不确定我做错了什么,但我认为它与instantiateItem()和/或destroyItem()有关。

任何想法?

2 个答案:

答案 0 :(得分:0)

这是必要的:

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

答案 1 :(得分:0)

正如@beworker指出的那样,我没有正确实施isViewFromObject()。我以为我是啊!

以下是我修复它的方法:

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == arg1;
}