I have a viewpager. There is a button layout. When a user clicks on it, it should give the data from the current image. But it gives the title from the next image.
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.image_fullscreen_preview, container, false);
imageViewPreview = (ImageView) view.findViewById(R.id.image_preview);
imageViewPreview.setOnTouchListener(new ImageMatrixTouchHandler(view.getContext()));
Photos image = images.get(position);
img_title = image.getTitle();
Glide.with(getActivity())
.load(image.getUrl())
.thumbnail(Glide.with(getActivity()).load(R.drawable.loader))
.fitCenter()
.crossFade()
.into(imageViewPreview);
Button save_img = (Button) view.findViewById(R.id.save_img);
save_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), img_title, Toast.LENGTH_SHORT).show();
}
});
share_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shareImage(view);
}
});
container.addView(view);
return view;
}
How can I get the title from the current image?
Because ViewPager initializes three objects: an object at the current position, an object from the previous position and an object from the next position. And as I see you update the img_title each time and object is initializing
img_title = image.getTitle();
All what you have to do is make it a local variable:
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.image_fullscreen_preview, container, false);
imageViewPreview = (ImageView) view.findViewById(R.id.image_preview);
imageViewPreview.setOnTouchListener(new ImageMatrixTouchHandler(view.getContext()));
Photos image = images.get(position);
final String img_title = image.getTitle();
Glide.with(getActivity())
.load(image.getUrl())
.thumbnail(Glide.with(getActivity()).load(R.drawable.loader))
.fitCenter()
.crossFade()
.into(imageViewPreview);
Button save_img = (Button) view.findViewById(R.id.save_img);
save_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), img_title, Toast.LENGTH_SHORT).show();
}
});
share_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shareImage(view);
}
});
container.addView(view);
return view;
}