2

ViewPagerを作成しています。PagerButton.OnClickListenerに電話します。 Activity次のコードからアダプタの設定:ここではViewPagerの次のページをプログラムで呼び出す方法は?

@EActivity(R.layout.activity_city) 
public class CountrySelectionActivity extends Activity { 

@ViewById ViewPager viewPager; 
@Bean CustomAdapter customAdapter; 

@AfterViews 
void afterViewCreated(){ 
    viewPager.setAdapter(customAdapter); 
    } 
} 

CustomAdapterクラスのコードです:

@EBean 
public class CustomAdapter extends PagerAdapter { 

public CustomAdapter(Context context) { 
    mContext = context; 
    loadData(); // loading data as in List 
} 

...... 
...... 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == object; 
} 

@Override 
public void destroyItem(View container, int position, Object object) { 
    ((ViewPager) container).removeView((View) object); 
} 

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    TextView firstCountry; 
    TextView secondCountry; 

    LayoutInflater layoutInflater = LayoutInflater.from(mContext); 
    View view = layoutInflater.inflate(R.layout.country_pager_item, container, false); 
    .... 
    .... 
} 

すべてが正常に動作しています。 pagesにはViewPagerという2つの国が表示されています。

また、pages(前へと次へ)をスライドさせることもできます。しかし、TextViewなどをクリックするとすぐに次のページャに移動したいと思います。 ViewPagerでそれは可能ですか?

答えて

2

確かに!あなただけ呼び出す必要がありviewPager.setCurrentItem(...)

EDIT:

public class CustomAdapter extends PagerAdapter { 

    // ... other methods 

    public static interface Callback { 
     public void onNextClick(int nextPage); 
    } 

    private Callback callback; 

    public void setCallback(Callback callback) { 
     this.callback = callback; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     TextView firstCountry; 
     TextView secondCountry; 

     LayoutInflater layoutInflater = LayoutInflater.from(mContext); 
     View view = layoutInflater.inflate(R.layout.country_pager_item, container, false); 

     secondCountry.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (callback != null){ 
         callback.onNextClick(2); 
        } 
       } 
      }); 
    } 
} 

とあなたの活動中:

あなたがあなたのAdapter内からこのメソッドを呼び出すことができますか迷っている場合は、ここでの例です

@AfterViews 
void afterViewCreated(){ 
    customAdapter.setCallback(new Callback() { 
     @Override 
     public void onNextClick(int nextPage) { 
      viewPager.setCurrentItem(nextPage); 
     } 
    }); 
    viewPager.setAdapter(customAdapter); 
    } 
} 
+0

おっとに設定!私はちょうど質問を更新しました: 私はこのメソッドを呼び出す必要がありますか? OnClickListner'では? –

+0

:あなたの 'TextView'の' OnClickListener'にDepがあります。 –

+0

私もこれについて考えていましたが、 'CustomAdapter'クラスに 'viewPager'のインスタンスがありません。しかし、これは何ですか? –

0
yourButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View view) { 
// replace 1 by the page you want 
     yourViewPager.setCurrentItem(1, true); 
    } 
}); 

ボタンが内側にある場合は あなたはボタンがインターフェースを呼び出すクリックすると、あなたの最初のフラグメントにインターフェイスを作成し、あなたのmainactivityでそれを実装し、そこには、ビューページャページ

yourViewPager.setCurrentItem(2, true); 
関連する問題