首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从页面适配器的视图访问viewpager?

如何从页面适配器的视图访问viewpager?
EN

Stack Overflow用户
提问于 2017-08-08 16:31:59
回答 2查看 530关注 0票数 2

我有一个ViewPager和一个自定义的PagerAdapter。

在寻呼机适配器中有一个视图,onClick我想要移到下一页。

我实现了以下内容:

代码语言:javascript
复制
@Override  
public Object instantiateItem(final ViewGroup container, int position) {     
  view.setOnClickListener(
     (view) -> {  
        int current = ((ViewPager)container).getCurrentItem(); 
        ((ViewPager) container).setCurrentItem(current + 1, true);  
    }   
  );    
}    

这可以工作,但我不确定我是否应该从适配器内部访问视图分页程序。

执行此操作的标准方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-08-08 16:44:33

你的方法是可以的。如果你想要更干净的架构,你应该把ViewPager作为接口传递给你的适配器。您的代码将如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-06-24 03:27:02

@Anton Potapov的方法运行良好,但更简单的方法是将您的viewpager设置为公共的,并使用其父级访问它,如下所示:

代码语言:javascript
复制
((ParentActivity)context).viewPager.setCurrentItem(position++);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45563241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档