viewpager studio sectionspageradapter fragments example android android-viewpager

sectionspageradapter - viewpager android studio



El dispositivo onPageScrollStateChanged de ViewPager de Android nunca recibe llamadas (2)

Cuando utiliza PageIndicator junto con el Viewpager, no se llama al onPageChangeListener del ViewPager. No sé la razón de esto, pero esto sucedió cuando estaba usando ambos. Puede ser porque el indicador de página consume el evento de cambio de página. En su lugar, debe establecer una escucha de cambio de página para el PageIndicator y se llamará cuando cambie la página. Aquí es cómo puede hacer esto:

indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected (int page) { //page changed } @Override public void onPageScrolled (int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged (int arg0) { } });

Espero que esto sea de ayuda. Siéntase libre de discutir.

Extendí la clase ViewPager e implementé onPageChangeListener. Uso este ViewPager junto con un CirclePageIndicator dentro de un SherlockFragment. El ViewPager contiene ImageViews y TextViews, nada del otro mundo.

Necesito hacer algo debajo del ViewPager cada vez que se cambia la página. Entonces, pensé que necesitaba usar onPageScrollStateChanged y verificar cuándo el estado es IDLE, o algo así.

El problema es que de los 3 métodos implementados (onPageScrollStateChanged, onPageSelected y onPageScrolled), solo se llama a onPageScrolled (lo verifiqué con un mensaje de registro en cada método). Porqué es eso ? Código abajo.

public class UninterceptableViewPager extends ViewPager implements OnPageChangeListener{ private ArrayList<TwoRowListViewAdapter> mAdaptersList = null; private ListView mListView = null; private ProgressBar mProgressBar = null; public UninterceptableViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public boolean onInterceptTouchEvent(MotionEvent event) { getParent().requestDisallowInterceptTouchEvent(true); return super.onInterceptTouchEvent(event); } public void setAdaptersList(ArrayList<TwoRowListViewAdapter> adaptersList) { mAdaptersList = adaptersList; } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { super.onPageScrolled(position++, positionOffset, positionOffsetPixels); if (positionOffset == 0) // FIXME loadHistoryPage(position); } @Override public void onPageSelected(int position) {} @Override public void onPageScrollStateChanged(int state) {} // ------------------------------------------------------------------------------------------- // -------------- Helper Methods // ------------------------------------------------------------------------------------------- public void setListView(ListView listview) { mListView = listview; } public void setProgressBar(ProgressBar progressBar) { mProgressBar = progressBar; } private void loadHistoryPage(int position) { mListView.setVisibility(View.INVISIBLE); mProgressBar.setVisibility(View.VISIBLE); mListView.setAdapter(null); mListView.setAdapter(mAdaptersList.get(position-1)); mProgressBar.setVisibility(View.INVISIBLE); mListView.setVisibility(View.VISIBLE); }

}


setOnPageChangeListener está en desuso. utilizar addOnPageChangeListener

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } });