2011-12-11 33 views
0

我使用了ViewPager,並且希望獲得下一個項目以及將頁面向左和向右滾動時的上一個項目。我使用viewpager.setOnPageChangeListener,比如this example,但是當滾動它仍然給我相同的內容。在viewPager中使用setonItemChange Listner

這是我的代碼:

@Override 
     public void onPageSelected(int position) { 
      mFocusedPage = position; 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

      if (state ==ViewPager.SCROLL_STATE_IDLE) { 
       if (mFocusedPage == 0) { 
        clientMeterString="firstitem:number1"; 
       } else if (mFocusedPage == 2) { 
        clientMeterString="seconditem:number2"; 
       } 

       awesomePager.setCurrentItem(1, false); 
      } 
     } 
    } 
); 

誰能幫助?

回答

3

我不知道你到底想要達到什麼目標,但我認爲呼叫setCurrentItem總是值爲1是讓你看到相同內容的東西。

爲了得到前一個頁面(也就是被隱藏的),你應該使用SCROLL_STATE_DRAGGING,如:

awesomePager.setOnPageChangeListener(new OnPageChangeListener() { 
     private int prevPage = -1; 
     @Override 
     public void onPageSelected(int position) { 
      // after page is selected do something with your prevPage 
      // eg: compare to "position" to check if it's from the left or right 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
      if (arg0 == ViewPager.SCROLL_STATE_DRAGGING) { 
       prevPage = awesomePager.getCurrentItem(); 
      } 
     } 
    });