我使用ViewPager
列表中的水平滚动图像RecyclerView.Adapter.
ViewPager
使用控制显示的适配器。每个列表项必须加载不同的图像。问题是在滚动列表(RecyclerView.Adapter
)期间,在ViewPager
加载错误图像的上下都搞砸了。我在ViewHolder
创建新
适配器:
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> images)
传递一个图像数组,根据这些图像列出项目的位置(RecyclerView
):
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.vpAdapter.setImages(mData.get(position).getImages());
holder.viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int pagePosition, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int pagePosition) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
ViewPagerAdapter
中的方法如下所示:
public void setImages(List<Images> images){
mImages = images;
notifyDataSetChanged();
}
instantiateItem()
中的方法ViewPagerAdapter
如下所示:
@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
中的图片列表?