ViewPager始终滑回到第一项

时间:2019-04-01 12:42:36

标签: android android-fragments android-viewpager

我正在编写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);
}

}

0 个答案:

没有答案