我正在编写Tinder之类的应用。原理是一样的。在我的适配器中,我有一个viewpager,您可以在其中向左滑动以查看用户的其他图像。我的问题是,如果用户有两个以上的图像,则viewpager始终会滑回第一张图像。我只能看到几毫秒的第二张图片。但是,如果用户只有两个图像,那么一切都会完美。
在我的适配器中:
public void onBindViewHolder
(@NonNull final ViewHolder viewHolder, int i) {
final cards currentItem = listItems.get(i);
int counter = 0;
ViewPageAdapter2 viewPageAdapter;
String[] images;
if(!currentItem.getProfileImageUrl().equals("default")){
counter++;
}
if(!currentItem.getProfileImageUrl2().equals("default")){
counter++;
}
if(!currentItem.getProfileImageUrl3().equals("default")){
counter++;
}
images = new String[counter];
images[0] = currentItem.getProfileImageUrl();
if(3 == counter){
images[1] = currentItem.getProfileImageUrl2();
images[2] = currentItem.getProfileImageUrl3();
} else if(2 == counter){
images[1] = currentItem.getProfileImageUrl2();
}
Activity activity = (Activity) context;
viewPageAdapter = new ViewPageAdapter2(activity,images);
viewHolder.viewPager.setAdapter(viewPageAdapter);
}
还有我的viewPager:
public ViewPageAdapter2(Activity activity, String[] images){
this.activity = activity;
this.images = images;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
inflater = (LayoutInflater) activity.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.view_pager,container, false);
ImageView image;
image = (ImageView) itemView.findViewById(R.id.profileImage);
DisplayMetrics dis = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dis);
int height = dis.heightPixels;
int width = dis.widthPixels;
image.setMaxHeight(height);
image.setMaxWidth(width);
try {
Picasso.get().load(images[position]).into(image);
} catch (Exception e){
}
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
((ViewPager) container).removeView((View) object);
}
}