Getting The Current Position of a Viewpager

Getting the current position of a ViewPager

Create a listener and set it on your viewpager:

/**
* Get the current view position from the ViewPager by
* extending SimpleOnPageChangeListener class and adding your method
*/
public class DetailOnPageChangeListener extends ViewPager.SimpleOnPageChangeListener {

private int currentPage;

@Override
public void onPageSelected(int position) {
currentPage = position;
}

public final int getCurrentPage() {
return currentPage;
}
}

Get Current Position of ViewPager

You shoul set text onPageSelected.

  viewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
System.out.println("Current position=="+num);
textView.setText((arg0+1)+" of "+ images.size());
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

System.out.println("onPageScrolled");
}

@Override
public void onPageScrollStateChanged(int num) {
// TODO Auto-generated method stub

}
});

How do you get the current page number of a ViewPager for Android?

in the latest packages you can also use

vp.getCurrentItem()

or

vp is the viewPager ,

pageListener = new PageListener();
vp.setOnPageChangeListener(pageListener);

you have to put a page change listener for your viewPager. There is no method on viewPager to get the current page.

private int currentPage;

private static class PageListener extends SimpleOnPageChangeListener{
public void onPageSelected(int position) {
Log.i(TAG, "page selected " + position);
currentPage = position;
}
}

Get the position of the ViewPager on first and last visible fragment

In YourPagerActivity.class add listener in create method

    viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
String positions=position + "";

Toast.makeText(YourPagerActivity.this, positions, Toast.LENGTH_SHORT).show();
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}

@Override
public void onPageScrollStateChanged(int state) {
}
});

Getting current view from ViewPager

You can try something like this -

@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater;
if(position != 10){
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(R.layout.viewpager_item, container,
false);
itemView.setTag("View"+position);

} else {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(R.layout.results, container,
false);
}
container.addView(itemView);
return itemView ;
}

And when you need the current view-

View myView = pager.findViewWithTag("View"+pager.getCurrentItem());

Android PagerAdapter, get current position

You would use:

int position = mViewPager.getCurrentItem()

Viewpager: getting current item position

What you are probably looking for is ViewPager.setOnPageChangeListener

so you can do something like:

myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {

}

@Override
public void onPageSelected(int i) {
fft.execute(i)
}

@Override
public void onPageScrollStateChanged(int i) {

}
});

Also, I'm not sure what type of task you're trying to execute when the page is selected but it make sense to cancel the previous one first..for example:

                @Override
public void onPageSelected(int i) {
fft.cancel(true);
fft.execute(i)
}

So you don't just spawn a bunch of concurrent tasks...

Viewpager detect first and last position

The following solution is working fine with me.

In order to know last position:

For your case, you cannot get last position '6' from onPageSelected(int position). If you got position totalNumberofPages - numberOfVisiblePagesAtATime, last page is already visible on screen.
For eg , 7-3 = 4 (If you got position 4, it means last page position 6 is already on screen.)

In order to know first position:

you cannot check in onPageChangeListener(). Because this will not call in first time launch.
You need to INVISIBLE your left arrow after viewPager setup. Then in onPageChangeListener call, VISIBLE again.

Getting the current Fragment instance in the viewpager

by selecting an option, I need to update the fragment that is
currently visible.

A simple way of doing this is using a trick related to the FragmentPagerAdapter implementation:

case R.id.addText:
Fragment page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + ViewPager.getCurrentItem());
// based on the current position you can then cast the page to the correct
// class and call the method:
if (ViewPager.getCurrentItem() == 0 && page != null) {
((FragmentClass1)page).updateList("new item");
}
return true;

Please rethink your variable naming convention, using as the variable name the name of the class is very confusing(so no ViewPager ViewPager, use ViewPager mPager for example).



Related Topics



Leave a reply



Submit