2017-08-08 3 views
1

私はViewPagerとカスタムPagerAdapterを持っています。
ページャアダプタには、onClickという次のページに移動したいという見解があります。
は、私は次のように実装:pageradapterのビューからviewpagerにアクセスするには?

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

これは動作しますが、私は、私はそのようなアダプタ内部からのビューのページャにアクセスする必要があることを確認していません。
これを行うための標準的な方法は何ですか?

答えて

0

あなたの方法はokです。クリーナーアーキテクチャーが必要な場合は、アダプターへのインターフェースとして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(); 
    } 
);  
} 
+0

ビューページからアダプタへの参照がある場合は、アダプタからのビューページへの参照を持つことをお勧めしますか?私。循環依存性 – Jim

+0

これは問題ありません。 GCで簡単に処理できるため、心配する必要はありません –

関連する問題