我有一个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);
}
);
}
这样可行,但我不确定是否应该从适配器内部访问视图寻呼机 这样做的标准方法是什么?
答案 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++);