2017-08-08 144 views
1

我有一個ViewPager和一個自定義的PagerAdapter。
在尋呼機適配器中有一個視圖onClick我想轉到下一頁。
我實現了以下內容:如何從pageradapter的視圖訪問viewpager?

@Override 
public Object instantiateItem(final ViewGroup container, int position) {  
    view.setOnClickListener(
    (view) -> { 
     int current = ((ViewPager)container).getCurrentItem(); 
     ((ViewPager) container).setCurrentItem(current + 1, true); 
    } 
);  
}  

這工作,但我不知道我應該從這樣的適配器內部訪問視圖尋呼機。
這是做什麼的標準方法?

回答

0

你的方法沒問題。如果你想要更清潔的電弧,你應該通過ViewPager作爲你的適配器的接口。並且您的代碼將如下所示:

public interface Pager { 
    /** 
    * Super method where you do 
    * int current = ((ViewPager)container).getCurrentItem(); 
    * ((ViewPager) container).setCurrentItem(current + 1, true); 
    * but in ViewPager. So you don't need to cast it any more. 
    */ 
    void goToNextItem(); 
} 

private Pager pager; 

@Override 
public Object instantiateItem(final ViewGroup container, int position) {  
    view.setOnClickListener(
    (view) -> { 
     pager.goToNextItem(); 
    } 
);  
} 
+0

從viewpager到適配器的引用還有一個引用來自適配器的viewpager是個好主意嗎?即循環依賴 – Jim

+0

沒關係。 GC可以輕鬆處理它,所以沒有什麼可擔心的 –