Добавление следующих и предыдущих кнопок в ViewPager

Я хочу сделать слайдер изображений с Android Studio. Я нашел новый код слайдера, построенный с ViewPager, Я попробовал и сработало.. но я хочу добавить 2 кнопки для следующего и предыдущего..

При нажатии на кнопку, он должен перейти к следующему изображению или предыдущему изображению.

здесь mainactivity,

package org.trial.slider;   
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImageAdapter adapter = new ImageAdapter(this);
        viewPager.setAdapter(adapter);  
     }          
}

ImageAdapter.java файл,

    package org.trial.slider;

    import android.content.Context;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;

    /**
     * Created by ismail on 30.03.16.
     */
    public class ImageAdapter extends PagerAdapter {
        Context context;


        private int[] GalImages = new int[] {
                R.drawable.one,
                R.drawable.two,
                R.drawable.three
        };
        ImageAdapter(Context context){
            this.context=context;
        }
        @Override
        public int getCount() {
            return GalImages.length;
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            imageView.setImageResource(GalImages[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }

И у меня есть 2 файла XML; fragment_pager а также swipe_fragment

3 ответа

  1. добавить кнопку ваш MainActivity а также activity_main.xml
  2. добавить код button.setonclicklister(this); в OnCreate()
  3. Пример кода здесь:

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
            //prev button
            case R.id.btn_list_detail_img_prev:
                viewPager.setCurrentItem(mPager.getCurrentItem()-1,true);
                break;
            //nextbutton, 1st argument : pageindex, 2nd argument : Enable smooth 
            case R.id.btn_list_detail_img_next:
                viewPager.setCurrentItem(mPager.getCurrentItem()+1,true);
                break;
    }
    

Есть имя метода viewPager.setCurrentItem(position),
Этот метод принимает целочисленное значение в качестве индекса и устанавливается для объекта viewPager. С помощью этого метода вы можете изменить позицию элемента пейджера.

class MyClass extends Fragment implements ViewPager.OnPageChangeListener {

    private int selectedViewPager = 0;

    public void onViewClicked(View view) {

        switch (view.getId()) {
            case R.id.backward:
                if (selectedViewPager > 0) {
                    viewPager.setCurrentItem(selectedViewPager - 1, true);
                }
                break;

            case R.id.fwd:
                if (viewPager.getAdapter().getCount() > selectedViewPager) {
                    viewPager.setCurrentItem(selectedViewPager + 1, true);
                }
                break;
        }
    }


    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        selectedViewPager = position;
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}
Другие вопросы по тегам