JavascriptProva

domenica 11 dicembre 2016

Slider per schermate

C'è un Adapter che dovrebbe funzionare come l'adapter per le ListView.
In questo codice, sarebbe questo:
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return new Frammento();
        }

        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    }
Il suo costruttore è questo:
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }
e accetta come parametro FragmentManager.

Come un ArrayAdapter viene "abbinato" a una ListView, così questo Adapter andrebbe "abbinato" a un controllo che fa scorrere le schermate...

Ecco: istanzio un Adapter:
 mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
e quindi lo "azzecco" al ViewPager:
mPager.setAdapter(mPagerAdapter);
Ecco la sequenza completa: prendo il ViewPager dal file XML, istanzio un'istanza dell'Adapter e poi la azzecco al ViewPager:
        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
Ecco, il codice completo è questo, e funziona:
public class MainActivity extends AppCompatActivity {

    private static final int NUM_PAGES = 3;


    private ViewPager mPager;


    private PagerAdapter mPagerAdapter;

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

 
        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
    }


    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch(position){
                case 0:
                    return new Frammento();

                case 1:
                    return new Frammento2();

                case 2:
                    return new Frammento3();

                default:break;

            }
            return null;
        }

        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    }
}

Nessun commento:

Posta un commento