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();
'developer tip' 카테고리의 다른 글
8 비트 임베디드 시스템에서 사용할 수있는 flex / bison에 대한 대안이 있습니까? (0) | 2020.10.06 |
---|---|
MySQL 날짜 / 시간 값을 System.DateTime으로 변환 할 수 없습니다. (0) | 2020.10.06 |
제네릭의 멋진 점은 무엇이며 왜 사용합니까? (0) | 2020.10.06 |
MVC, C # 및 jQuery를 사용하여 CSV로 내보내기 (0) | 2020.10.06 |
웹 서버가없는 스프링 부트 (0) | 2020.10.06 |