我有一个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);
}
);
} 这可以工作,但我不确定我是否应该从适配器内部访问视图分页程序。
执行此操作的标准方法是什么?
发布于 2017-08-08 16:44:33
你的方法是可以的。如果你想要更干净的架构,你应该把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();
}
);
}发布于 2020-06-24 03:27:02
@Anton Potapov的方法运行良好,但更简单的方法是将您的viewpager设置为公共的,并使用其父级访问它,如下所示:
((ParentActivity)context).viewPager.setCurrentItem(position++);https://stackoverflow.com/questions/45563241
复制相似问题