Android 如果ViewPager位于每个列表项RecyclerView中,如何使用它?

Android 如果ViewPager位于每个列表项RecyclerView中,如何使用它?,android,list,android-viewpager,android-recyclerview,android-adapter,Android,List,Android Viewpager,Android Recyclerview,Android Adapter,我使用ViewPager在列表RecyclerView.Adapter中水平滚动图像。ViewPager使用控制显示的适配器。每个列表项必须加载不同的图像。问题是,在ViewPager中上下滚动列表(RecyclerView.Adapter)时,加载了不正确的图像-所有图像都乱七八糟。我在ViewHoldercreate new中 适配器: public static class ViewHolder extends RecyclerView.ViewHolder { View

我使用
ViewPager
在列表
RecyclerView.Adapter中水平滚动图像。
ViewPager
使用控制显示的适配器。每个列表项必须加载不同的图像。问题是,在
ViewPager
中上下滚动列表(
RecyclerView.Adapter
)时,加载了不正确的图像-所有图像都乱七八糟。我在
ViewHolder
create new中

适配器:

public static class ViewHolder extends RecyclerView.ViewHolder {

        ViewPagerAdapter vpAdapter;

        public DataObjectHolder(View itemView, int viewType, Context context) {
            super(itemView);

            vpAdapter = new ViewPageAdapter(context);
            viewPager = (ViewPager) itemView.findViewById(R.id.viewPager);
            viewPager.setAdapter(vpAdapter);
        }

}
然后我在
onBindViewHolder
中,使用我的方法,
getImages(List images)
传递一个图像数组,列表项(
RecyclerView
)的位置基于该数组:

ViewPagerAdapter
中的方法如下所示:

public void setImages(List<Images> images){
            mImages = images;
            notifyDataSetChanged();
}
@Override
    public Object instantiateItem(ViewGroup view, int position) {
        View imgLayout = inflater.inflate(R.layout.itemPager, view, false);
        assert imgLayout != null;
        ImageView imageView = (ImageView) imgLayout.findViewById(R.id.imageView);

        Context context = imageView.getContext();
        Picasso.with(context)
                .load(mImages.get(position).getImage())
                .resize(300, 300)
                .into(imageView);

        view.addView(imgLayout, 0);
        return imgLayout;
    }
我做错了什么


如果正确,则需要初始化
ViewPagerAdapter
以及如何正确地在
ViewPagerAdapter
中传递图像列表?

您应该为每个视图创建一个
新的ViewPagerAdapter()
,可能是onBind。但我认为这不会很好。我尝试在方法
onBind
中创建一个
新的ViewPagerAdapter()
,但不幸的是,它没有解决我的问题,并且仍然出现了减速的UI。您可以采取的另一种方法是生成(在回收器适配器构造函数中)一个
ArrayList
,每个位置都有
new ViewPagerAdapter()
s。然后,onBind从数组中获取第n个ViewPagerAdapter并将其设置为视图。不过,如前所述,回收适配器不是一个好主意。谢谢。我应该试试,我想它能用。也许还有一些变体?就我个人而言,我会用HorizontalScrollView或类似的东西替换ViewPager,并在绑定时填充它们。但是,尝试一下数组方法。您应该为每个视图创建一个
新的ViewPagerAdapter()
,可能是onBind。但我认为这不会很好。我尝试在方法
onBind
中创建一个
新的ViewPagerAdapter()
,但不幸的是,它没有解决我的问题,并且仍然出现了减速的UI。您可以采取的另一种方法是生成(在回收器适配器构造函数中)一个
ArrayList
,每个位置都有
new ViewPagerAdapter()
s。然后,onBind从数组中获取第n个ViewPagerAdapter并将其设置为视图。不过,如前所述,回收适配器不是一个好主意。谢谢。我应该试试,我想它能用。也许还有一些变体?就我个人而言,我会用HorizontalScrollView或类似的东西替换ViewPager,并在绑定时填充它们。但是,请尝试使用数组方法。
@Override
    public Object instantiateItem(ViewGroup view, int position) {
        View imgLayout = inflater.inflate(R.layout.itemPager, view, false);
        assert imgLayout != null;
        ImageView imageView = (ImageView) imgLayout.findViewById(R.id.imageView);

        Context context = imageView.getContext();
        Picasso.with(context)
                .load(mImages.get(position).getImage())
                .resize(300, 300)
                .into(imageView);

        view.addView(imgLayout, 0);
        return imgLayout;
    }