2017-08-08 143 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可以轻松处理它,所以没有什么可担心的 –