Estoy haciendo una aplicación con viewpager (tiene 3 páginas), y en este momento estoy tratando de hacer la primera página para acceder a la base de datos SQL e imprimir datos en TI en una lista de lististas (esta funcionalidad es solo para la primera página, las otras páginas tienen otras funcionalidades que aún no se implementan), pero ahora mi problema

View rootView = inflater.inflate(R.layout.fragment_prioridad_alta, container, false);

List<String> array = new ArrayList<>();

ViewPager pg = (ViewPager) container;
int current = pg.getCurrentItem();

if (current == 0) {
    // Database access, I'm using a Cursor for the DB and adding 
    // the data to an arrayList to print it using the ArrayAdapter,
    // I don´t know if this is the most properly way of doing it
    // but currently my main purpose is making this works
}

ArrayAdapter adapt = new ArrayAdapter(getActivity(), R.layout.fragment_prioridad_alta, R.id.textTarea, array);
ListView lv = (ListView) rootView.findViewById(R.id.listView);
lv.setAdapter(adapt);

return rootView;

Solo para ser clara, la primera vez que ejecuto la aplicación los datos se imprimen en la primera página (pero solo la primera vez), después de eso, cuando cambio de página, los datos se imprimen solo en la segunda página y nunca más en la primera.

A continuación, agrego el código del Changelistener para las páginas que se implementa en el método Oncreate:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prioridad_alta);

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Prioridad Alta");
setSupportActionBar(toolbar);

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }

    @Override
    public void onPageSelected(int position) {
        switch(position){
            // Camnbia la pagina de prioridad
            case 0: toolbar.setTitle("Prioridad Alta"); break;
            case 1: toolbar.setTitle("Prioridad Media"); break;
            case 2: toolbar.setTitle("Prioridad Baja"); break;
        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});

Este es el código para el PagerAdapter:

public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Prioridad Alta";
            case 1:
                return "Prioridad Media";
            case 2:
                return "Prioridad Baja";
        }
        return null;
    }
}
0
David Godoy 30 ago. 2016 a las 11:25

2 respuestas

La mejor respuesta

Dado que está pasando la posición al fragmento, verifique la posición que pase al fragmento en lugar del índice de selección de buscapersonas, ya que el fragmento se inicializa antes de seleccionar que se seleccionan cuando se selecciona en la página 0 Página 1 también se inicializa.

Así que en lugar de

int current = pg.getCurrentItem();

Utilice la posición que envíe al fragmento al fragmento de la creación en NewInstance (Posición +1)

int current =position -1;
0
Hala.M 30 ago. 2016 a las 13:15

Uso

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {       
        conterchange.setText(""+(1+position));
    }

    @Override
    public void onPageSelected(int position) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});
0
Ashish 30 ago. 2016 a las 08:33