ViewPager всегда проводит пальцем к первому элементу - PullRequest
0 голосов
/ 01 апреля 2019

Я программирую такое приложение, как 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);
}

}

...