我想知道ViewPager
的當前頁面位置。我創建一個適配器並將此適配器設置爲ViewPager
。現在我想知道當前頁面編號或當前視圖的位置,因爲我想在該特定頁面上啓動一些額外的事件。如何獲取ViewPager for Android的當前頁碼?
我用viewPager.setCurrentItem(1);
設置第一項。
是否有類似的方法獲取當前頁面?
我想知道ViewPager
的當前頁面位置。我創建一個適配器並將此適配器設置爲ViewPager
。現在我想知道當前頁面編號或當前視圖的位置,因爲我想在該特定頁面上啓動一些額外的事件。如何獲取ViewPager for Android的當前頁碼?
我用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;
}
}
如果你只想要的位置,vp.getCurrentItem()
將它送給你,沒有必要應用onPageChangeListener()單獨這一目的。
有一種方法object_of_ViewPager.getCurrentItem()
返回視圖尋呼機
這應該是被接受的答案 –
我實際上首先發布了這個答案@ChuckBoris,依然這一個似乎收集了更多的選票,並且顯然是一個代言。奇怪的是這個網站的方式:) –
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;
}
對於這個問題OnPageChange對監聽器是最好的,但它也有一個小的錯誤,這是它不會d檢測第0個位置的起始時間一旦您將更改頁面,它將開始檢測頁面選定的位置......對於此問題,我提供了最簡單的解決方案
1.您必須保持所選的位置值,然後使用它......
2.案例1:在起始位置總是零....
案例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();
}
});
setOnPageChangeListener已棄用。使用addOnPageChangeListener而不是setOnPageChangeListener。 – Selin
你會找出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) {
}
});
的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();
謝謝很多人..你的作品..你以前在ViewPager上工作過嗎? –
只有一個想法currentPage應該是靜態的... – Necronet
@Necronet不,它不應該。 PageListener類應該是一個內部類,而不是嵌套類。 – dcow