如何从pageradapter的视图访问viewpager?

时间:2017-08-08 08:31:59

标签: android android-viewpager android-pageradapter

我有一个ViewPager和一个自定义的PagerAdapter 在寻呼机适配器中有一个onClick我希望转到下一页的视图 我实现了以下内容:

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

这样可行,但我不确定是否应该从适配器内部访问视图寻呼机 这样做的标准方法是什么?

2 个答案:

答案 0 :(得分:0)

你的方法还可以。如果你想要更清晰的arcitecture,你应该将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();
    }   
  );    
}

答案 1 :(得分:0)

@Anton Potapov的方法效果很好,但更简单的方法是将viewpager公开并使用其父级访问它,如下所示:

((ParentActivity)context).viewPager.setCurrentItem(position++);