Android:实现只加载新页面的ViewPager

标签 android android-viewpager android-gallery

我正在尝试实现一个始终加载新图像的图库,无论用户是向左还是向右滑动。我所做的是告诉我的 PagerAdapter.instantiateItem(v,position)mPosition++ 加载图像,其中 mPosition 被初始化为 0。 注意我没有使用提供的 position

public class ViewPagerAdapter extends PagerAdapter {

    private Context mContext;
    private ImageFactory mImageFactory;
    private int mPosition;

    public ViewPagerAdapter(Context c) {
        mContext = c;
        mImageFactory = ImageFactory.instance();
        mPosition = 0;
    }

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

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

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

        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.viewpager_item, container,
                false);
        // Locate the ImageView in viewpager_item.xml
        ImageView imgflag = (ImageView) itemView.findViewById(R.id.flag);

        // Load Bitmap to ImageView
        mImageFactory.loadImage(imgflag, mPosition++);

        // Add viewpager_item.xml to ViewPager
        ((ViewPager) container).addView(itemView);

        return itemView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Remove viewpager_item.xml from ViewPager
        ((ViewPager) container).removeView((FrameLayout) object);

    }

}

但这不起作用,我猜这是因为 ViewPager 缓存了页面。

所以我不知道我的假设是对还是错,但我将不胜感激任何建议。

谢谢!

最佳答案

PagerAdapter 具有以下您可以覆盖的方法:

setPrimaryItem 正如文档所述:“调用以通知适配器当前认为哪个项目是“主要的”,即显示给用户的当前页面。”

所以它可以用作更新图像的钩子(Hook)。如果您需要更新屏幕外的页面,则需要保留对已实例化 View 的引用(注意不要泄漏 View )。

此外,请查看 Jake Wharton RecyclingPagerAdapter。太棒了!

https://github.com/JakeWharton/salvage

关于Android:实现只加载新页面的ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20659182/

相关文章:

android - 如何登录 Kotlin 的过滤器功能?

android - Viewpager 变得太高

android - 如何在不扩展 Gallery 类的情况下停止在 Android 中使用 Gallery

android - 我们可以将我们的应用程序设置菜单添加到 android 设备设置菜单吗

android - ViewPager 中的 FragmentTransaction

android - 如何从子 Activity 调用 TabActivity 中的函数?

android - 使用其他viewPager时应用崩溃

android - 在屏幕旋转时在 ViewPager 中保存 fragment 状态

给定项目的onClickListener时Android Gallery View滚动问题

安卓媒体扫描仪 : Remove image file(s) from gallery