の現在のページ位置を知りたいViewPager
。アダプターを作成し、このアダプターを に設定しViewPager
ます。その特定のページでいくつかの追加イベントを開始したいので、現在のページ番号または現在のビューの位置を知りたいです。
viewPager.setCurrentItem(1);
最初の項目の設定に使用しました。
現在のページを取得するための同様の方法はありますか?
の現在のページ位置を知りたいViewPager
。アダプターを作成し、このアダプターを に設定しViewPager
ます。その特定のページでいくつかの追加イベントを開始したいので、現在のページ番号または現在のビューの位置を知りたいです。
viewPager.setCurrentItem(1);
最初の項目の設定に使用しました。
現在のページを取得するための同様の方法はありますか?
最新のパッケージでも使用できます
vp.getCurrentItem()
また
vp は viewPager です。
pageListener = new PageListener();
vp.setOnPageChangeListener(pageListener);
viewPager のページ変更リスナーを配置する必要があります。viewPager には、現在のページを取得するメソッドはありません。
private int currentPage;
private static class PageListener extends SimpleOnPageChangeListener{
public void onPageSelected(int position) {
Log.i(TAG, "page selected " + position);
currentPage = position;
}
}
object_of_ViewPager.getCurrentItem()
ビューページャーの現在閲覧中のページの位置を返すメソッドがあります
位置のみvp.getCurrentItem()
が必要な場合は、それを提供します。その目的だけで onPageChangeListener() を適用する必要はありません。
setOnPageChangeListener は非推奨であることがわかります。以下のように addOnPageChangeListener を使用してください。
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 1){ // if you want the second page, for example
//Your code here
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
この問題には、Onpagechange リスナーが最適ですが、小さな間違いが 1 つあります。それは、0 番目の位置の開始時刻を検出しないということです。ページを変更すると、選択されたページの位置を検出し始めます。問題 私が見つけた最も簡単な解決策
1.選択した位置の値を維持してから使用する必要があります....
2.
ケース 1: 位置の開始時は常にゼロです....
値を保持位置に
3.次に、アクティビティでその保持を使用してアクションを実行します...
Public int maintain=0;
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
//Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show();
}
@Override
public void onPageSelected( int i) {
// here you will get the position of selected page
maintain = i;
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
updateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show();
data.set(maintain, "Replaced "+maintain);
myViewPager.getAdapter().notifyDataSetChanged();
}
});
getCurrentItem()
、実際には最初と最後のページの正しい位置を示していません。次のコードを追加して修正しました。
public void CalcPostion() {
current = viewPager.getCurrentItem();
if ((last == current) && (current != 1) && (current != 0)) {
current = current + 1;
viewPager.setCurrentItem(current);
}
if ((last == 1) && (current == 1)) {
last = 0;
current = 0;
}
display();
last = current;
}
viewpager.i にはメソッド getCurrentItem() はありません。既に API をチェックしています。