2012-08-17 21 views
6

次のコードは、4ページをうまくスクロールします。私の問題は、ページがスクロールされたときにonPageScrolledイベントがトリガされないということです。これは、myPager.SetOffsccreenPageLimit(4)コマンドを使用するかどうかに関係なく発生します。ドキュメントを読んだ後で、私はimplements ViewPager.OnPageChangeListenerMyPagerAdapterクラスに含まれているときにイベントがトリガされるべきだと私は理解しています。私は間違って何をしていますか?ViewPagerのonPageScrolledイベントが呼び出されない

おかげで、 ゲイリー・ブレイクリー

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; 
    } 
} 

答えて

6

あなたはまたsetOnPageChangeListener()を使用してリスナーをsetする必要があります。

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

もう一度ありがとうございます。それがそれでした。ゲーリー –

+0

'setOnPageChangeListener()'は非推奨です – noongiya95

1

私はあなたがあまりにもViewPagerに.setOnPageChangeListener()を使用して、イベントのこれらのタイプのリスナーとしてあなたのアダプタインスタンスを登録する必要があると考えています。

0

リスナーを設定する必要がありますが、setOnPageChangeListener(OnPageChangeListener)は推奨されていません。代わりに複数のリスナーを使用できるようにするには、addOnPageChangeListener(OnPageChangeListener)を使用する必要があります。

関連する問題