[android] 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 ()를 적용 할 필요가 없습니다.


답변

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


답변

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에는 이미 API를 확인한 getCurrentItem () 메소드가 없습니다.