의 현재 페이지 위치를 알고 싶습니다 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;
}
}
setOnPageChangeListener()
더 이상 사용되지 않습니다 addOnPageChangeListener()
. 대신 사용하십시오.
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 () 메소드가 없습니다.
setOnPageChangeListener () 메소드는 추천된다. 사용 addOnPageChangeListener (OnPageChangeListener) 대신.
OnPageChangeListener 를 사용 하고 onPageSelected()
메서드 내부의 위치를 가져올 수 있습니다 . 다음은 예입니다.
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) {
}
});
또는 getCurrentItem () 을 사용 하여 실제 위치를 가져옵니다.
viewPager.getCurrentItem();