Android 如何从pageradapter的视图访问viewpager?
我有一个可视寻呼机和一个自定义寻呼机。Android 如何从pageradapter的视图访问viewpager?,android,android-viewpager,android-pageradapter,Android,Android Viewpager,Android Pageradapter,我有一个可视寻呼机和一个自定义寻呼机。 在寻呼机适配器中有一个视图,onClick我想转到下一页。 我实施了以下措施: @Override public Object instantiateItem(final ViewGroup container, int position) { view.setOnClickListener( (view) -> { int current = ((ViewPager)container).getCur
在寻呼机适配器中有一个视图,
onClick
我想转到下一页。我实施了以下措施:
@Override
public Object instantiateItem(final ViewGroup container, int position) {
view.setOnClickListener(
(view) -> {
int current = ((ViewPager)container).getCurrentItem();
((ViewPager) container).setCurrentItem(current + 1, true);
}
);
}
这是可行的,但我不确定我是否应该像那样从适配器内部访问视图寻呼机。标准的方法是什么?您的方法可以。如果您想要更干净的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();
}
);
}
@安东·波塔波夫(Anton Potapov)的方法效果很好,但更简单的方法是公开您的viewpager,并使用其父级访问它,如下所示:
((ParentActivity)context).viewPager.setCurrentItem(position++);
当有从viewpager到适配器的引用时,从适配器引用viewpager是一个好主意吗?也就是说,循环依赖性是可以的。GC可以轻松处理它,因此无需担心