добавить кнопки "Далее" и "Назад" в изображение слайдера, созданное Picasso и viewpager.

Я сделал слайдер изображения с помощью viewpager и picasso, теперь я хочу добавить кнопку next, prev на изображении, как я могу это сделать?

Я видел разные ответы на это, но все они показывают ошибку

Это основное действие, при котором отображается слайдер изображения:

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);

    }
}

Это 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);
    }
}

person Aarzu    schedule 25.06.2019    source источник


Ответы (1)


добавьте этот метод в свой код

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

затем используйте это для следующей кнопки

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
       }
    });

и используйте это для предыдущей кнопки

 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
       }
    });

будет нормально работать;)

person Ali Amini    schedule 25.06.2019
comment
где я должен поместить первый код в адаптер или MainActivity, а для 2-го и 3-го кода, должен ли он быть в методе Oncreate или вне? - person Aarzu; 26.06.2019
comment
добавьте первый код в свой MainActivity и 2-й и 3-й код в методе onCreate - person Ali Amini; 26.06.2019
comment
Проверьте эту ссылку. - person Surender Kumar; 26.06.2019
comment
@SurenderKumar, это тот же ответ Али Амини, и у меня проблемы с этим, пожалуйста, помогите мне :( - person Aarzu; 26.06.2019
comment
не могли бы вы также помочь добавить tost msg, если пользователь перейдет к первому img? пожалуйста? @AliAmini - person Aarzu; 27.06.2019
comment
добавить его при событии клика Например: PreviousButton.setOnClickListener (new OnClickListener () {@Override public void onClick (View view) {viewPager.setCurrentItem (getItem (-1), true); Toast.makeText (mContext, Previous, Toast. LENGTH_LONG) .show ();}}); - person Ali Amini; 29.06.2019