2012-08-17 12 views
6

El siguiente código desplaza las 4 páginas muy bien. Mi problema es que el evento onPageScrolled no se activa cuando las páginas se desplazan. Esto ocurre ya sea que use o no el comando myPager.SetOffsccreenPageLimit(4). Después de leer los documentos, tengo entendido que cuando tengo implements ViewPager.OnPageChangeListener incluido en la clase MyPagerAdapter, se debe activar el evento. ¿Qué estoy haciendo mal?ViewPager onPageScrolled evento no llamado

Gracias, Gary Blakely

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    MyPagerAdapter adapter = new MyPagerAdapter(); 
    ViewPager myPager = (ViewPager) findViewById(R.id.mysevenpanelpager); 
    myPager.setAdapter(adapter); 
    myPager.setCurrentItem(0); 
    myPager.setOffscreenPageLimit(4); 
} 

private class MyPagerAdapter extends PagerAdapter 
    implements ViewPager.OnPageChangeListener { 

    public int getCount() { 
     return 4; 
    } 

    public Object instantiateItem(View collection, int position) { 
     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     int resId = 0; 
     switch (position) { 
     case 0: 
      resId = R.layout.left; 
      break; 
     case 1: 
      resId = R.layout.gps; 
      break; 
     case 2: 
      resId = R.layout.map; 
      break; 
     case 3: 
      resId = R.layout.right; 
      break; 
     } 

     View view = inflater.inflate(resId, null); 

     ((ViewPager) collection).addView(view, 0); 

     return view; 
    } 

    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 
    } 
    @Override 
    public void onPageScrollStateChanged(int arg0) { 
     int myint = 9; 
     myint = myint * 2; 
    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 
     int myint = 9; 
     myint = myint * 2; 
    } 

    @Override 
    public void onPageSelected(int arg0) { 
     int myint = 9; 
     myint = myint * 2; 
    } 
} 

Respuesta

6

También necesitan set el oyente utilizando setOnPageChangeListener().

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    MyPagerAdapter adapter = new MyPagerAdapter(); 
    ViewPager myPager = (ViewPager) findViewById(R.id.mysevenpanelpager); 
    myPager.setAdapter(adapter); 
    myPager.setCurrentItem(0); 
    myPager.setOffscreenPageLimit(4); 
    myPager.setOnPageChangeListener(adapter); // This line here 
} 
+0

Gracias de nuevo. Eso lo hizo. Gary –

+0

'setOnPageChangeListener()' está en desuso – noongiya95

1

creo que también es necesario registrar la instancia de adaptador como oyente para esos tipos de eventos también utilizando .setOnPageChangeListener() en el ViewPager.

0

Debe configurar un oyente, pero setOnPageChangeListener(OnPageChangeListener) está en desuso. Debería usar addOnPageChangeListener(OnPageChangeListener) para poder tener múltiples oyentes en su lugar.