Я программирую такое приложение, как Tinder. Принцип тот же. В моем адаптере у меня есть окно просмотра, где вы можете провести пальцем влево, чтобы увидеть другие изображения пользователя. Моя проблема в том, что если у пользователя есть более двух изображений, просмотрщик всегда перемещается назад к первому изображению. Я могу видеть второе изображение только в течение нескольких миллисекунд. Однако, если у пользователя только два изображения, все работает идеально.
В моем адаптере:
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);
}
}