developer tip

Android 용 ViewPager의 현재 페이지 번호는 어떻게 얻습니까?

copycodes 2020. 10. 6. 08:24
반응형

Android 용 ViewPager의 현재 페이지 번호는 어떻게 얻습니까?


의 현재 페이지 위치를 알고 싶습니다 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 ()를 적용 할 필요가 없습니다.


이 문제의 경우 Onpagechange listener가 가장 좋은 방법이지만 0 번째 위치의 시작 시간을 감지하지 못하는 작은 실수도있을 것입니다. 페이지를 변경하면 Page 선택한 위치를 감지하기 시작합니다. 가장 쉬운 해결책을 찾는 문제

1. 선택한 위치 값을 유지하고 사용해야합니다 ....
2. 사례 1 : 위치의 시작은 항상 0입니다 ....
사례 2 : 현재 항목을 설정하면 해당 항목을 설정한다는 의미라고 가정합니다. 유지 위치에 대한 가치
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();
        }
    });

You will figure out that setOnPageChangeListener is deprecated, use addOnPageChangeListener, as below:

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

    }
});

getCurrentItem(), doesn't actually give the right position for the first and the last page I fixed it adding this code:

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;
}

There is no any method getCurrentItem() in viewpager.i already checked the API


The setOnPageChangeListener() method is deprecated. Use addOnPageChangeListener(OnPageChangeListener) instead.

You can use OnPageChangeListener and getting the position inside onPageSelected() method, this is an example:

   viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            Log.d(TAG, "my position is : " + position); 
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

Or just use getCurrentItem() to get the real position:

viewPager.getCurrentItem();

참고URL : https://stackoverflow.com/questions/8117523/how-do-you-get-the-current-page-number-of-a-viewpager-for-android

반응형