87

の現在のページ位置を知りたいViewPager。アダプターを作成し、このアダプターを に設定しViewPagerます。その特定のページでいくつかの追加イベントを開始したいので、現在のページ番号または現在のビューの位置を知りたいです。

viewPager.setCurrentItem(1);最初の項目の設定に使用しました。

現在のページを取得するための同様の方法はありますか?

4

8 に答える 8

183

最新のパッケージでも使用できます

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;
        }
    }
于 2011-11-14T05:34:19.080 に答える
47

object_of_ViewPager.getCurrentItem()ビューページャーの現在閲覧中のページの位置を返すメソッドがあります

于 2012-03-11T05:43:35.863 に答える
17

位置のみvp.getCurrentItem()が必要な場合は、それを提供します。その目的だけで onPageChangeListener() を適用する必要はありません。

于 2011-11-30T13:02:12.870 に答える
10

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) {

    }
});
于 2015-07-27T09:42:34.943 に答える
7

この問題には、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();
        }
    });
于 2014-01-07T04:05:00.993 に答える
6

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;
}
于 2013-05-25T12:40:50.190 に答える
5

viewpager.i にはメソッド getCurrentItem() はありません。既に API をチェックしています。

于 2012-01-04T04:46:27.227 に答える