Reputation: 31
I am having a ViewPager
in my android app,I want to display the particular info with each image that i swipe with the ViewPager
,But i am getting the wrong info or position inside ViewPager
, it increments and decrements not properly in position,It first increments by two times,Please help me to solve it,My code is as below:
code:
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return subcategory.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DetailsActivity.this;
ImageView imageView;
imageView = new ImageView(context);
try {
int padding = context.getResources().getDimensionPixelSize(
R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
area.setText(subcategory.get(position).get(
Const.TAG_CATAEGORY_NAME));
System.out
.println("::::::::::::::::INFO INDEX:::::::::::::::::"
+ position);
imageLoader.displayImage(
subcategory.get(position).get(Const.TAG_BIG_IMG),
imageView, options);
System.out
.println("::::::::::::::::IMAGE INDEX:::::::::::::::::"
+ position);
opkey1.setText(subcategory.get(position).get("opk1"));
opkey2.setText(subcategory.get(position).get("opk2"));
opval1.setText(subcategory.get(position).get("opv1"));
opval2.setText(subcategory.get(position).get("opv2"));
((ViewPager) container).addView(imageView, 0);
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
Upvotes: 2
Views: 3858
Reputation: 1
I faced the same problem. I found the following solution: Inside the onCreate of the Activity that creates the viewpager, after the creation of the viewpager i have added a new onpagechangelistener and i used the onpagescrolled.
ViewPager viewPager = (ViewPager)findViewById(R.id.pager2);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffsetPixels == 0) {
//Do something on selected page at position
mtextView.setText(String.valueOf(position + 1) + " of " + String.valueOf(totalimages) + " photos.");
}
}
});
I have found these approach somewhere else, i do not remmber, but it is working for me.I hope I am helping somehow.
Upvotes: 0
Reputation: 172
ViewPager will preload one(by default) pager,so when the user can swipe smoothly. See
ViewPager.setOffscreenPageLimit(int limit)
PagerAdapter.instantiateItem(ViewGroup container, int position) the position here won't be equal to the ViewPager.getCurrentItem()
If you wan't to get the current position user swiped,use
ViewPager.addOnPageChangeListener(OnPageChangeListener listener)
Upvotes: 7