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
Remove Unwanted White Space in Webview Android
Upload Photo Using Httppost Multipartentitybuilder
Httpurlconnection.Openconnection Fails Second Time
Use 32-Bit Jni Libraries on 64-Bit Android
Imageview Adjustviewbounds Not Working
Android: How to Check How Much Memory Is Remaining
Draw a Semicircle in The Background of a View
Ionic Cordova App Stopped Compiling After Google's June 17Th Firebase Sdk Update
How to Set The App Icon as The Notification Icon in The Notification Drawer
How to Implement Ssl Certificate Pinning While Using React Native
How to List All Files and Folders Locating on Sd Card
Bitmapdrawable Deprecated Alternative
Crop Square Image to Circle - Programmatically
Camera Preview Is in Portrait Mode But Image Captured Is Rotated