0

I've made a image slider with help of viewpager and picasso, now i want to add next, prev button on the image, how can i do that?

I saw different answers of this but all of them are showing error

This is main activity where image slider is shown:

public class MainActivity extends AppCompatActivity {
    private int[] imageUrls = new int[]{
            R.drawable.after_cookie,
            R.drawable.before_cookie
    };
    private WebBackForwardList viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.view_pager);
        ViewPageAdapter adapter = new ViewPageAdapter(this, imageUrls);
        viewPager.setAdapter(adapter);

    }
}

This is ViewPageAdapter:

public class ViewPageAdapter extends PagerAdapter {

    private Context context;
    private int[] imageUrls;

    ViewPageAdapter(Context context, int[] imageUrls) {
        this.context = context;
        this.imageUrls = imageUrls;
    }



    @Override
    public int getCount() {
        return imageUrls.length;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        Picasso.get()
                .load(imageUrls[position])
                .fit()
                .centerCrop()
                .into(imageView);
        container.addView(imageView);

        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}
Aarzu
  • 15
  • 5

1 Answers1

0

add this method to your code

private int getItem(int i) {
   return viewPager.getCurrentItem() + i;
}

then use this for next button

Button NextButton = (Button)findViewById(R.id.button1);
yourButton.setOnClickListener(new OnClickListener() {

 @Override
       public void onClick(View view) {
           viewPager.setCurrentItem(getItem(+1), true); //getItem(+1) for next
       }
    });

and use this for the previous button

 Button PreviousButton = (Button)findViewById(R.id.button2);
 PreviousButton.setOnClickListener(new OnClickListener() {

 @Override
       public void onClick(View view) {
           viewPager.setCurrentItem(getItem(-1), true); //getItem(-1) for previous
       }
    });

it will work fine ;)

Ali Amini
  • 356
  • 1
  • 3
  • 12
  • where should i put the first code in Adapter or MainActivity and for 2nd and 3rd code, Should it be in Oncreate method or outside? – Aarzu Jun 26 '19 at 04:44
  • add first code in your MainActivity and 2nd and 3rd code in onCreate method – Ali Amini Jun 26 '19 at 07:31
  • Check this [link](https://stackoverflow.com/questions/10852744/android-viewpager-prev-next-button). – Surender Kumar Jun 26 '19 at 13:13
  • @SurenderKumar it's answer is same a of Ali Amini and Im having problem in it please help me :( – Aarzu Jun 26 '19 at 14:03
  • can you please also helpt to add tost msg if user go prev for 1st img? please? @AliAmini – Aarzu Jun 27 '19 at 02:56
  • add it in on click event Like: PreviousButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { viewPager.setCurrentItem(getItem(-1), true); Toast.makeText(mContext,"Previous",Toast.LENGTH_LONG).show(); } }); – Ali Amini Jun 29 '19 at 19:17