android - 在 buttonclick 上从 viewpager 获取图像和标题
问题描述
我有一个浏览器。有一个按钮布局。当用户点击它时,它应该提供当前图像中的数据。但它给出了下一张图片的标题。
@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;
}
如何从当前图像中获取标题?
解决方案
因为 ViewPager 初始化了三个对象:当前位置的对象、上一个位置的对象和下一个位置的对象。正如我所见,您每次都更新 img_title 并且对象正在初始化
img_title = image.getTitle();
您所要做的就是将其设为局部变量:
@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;
}
推荐阅读
- css - 如何控制粘性元素的子元素的 z-index
- c - 指针表达式何时“基于”另一个指针?
- javascript - 如何克隆/复制 DOM 节点的影子 Dom?
- asp.net-core - .NET Core Razor 路由到 REST 样式路由
- php - 将 PDF 从 MySql DB 检索到 android(使用 Volley)
- java - java - 如何在Java的嵌套for循环中用字母递增值?
- debian - glibc 破坏的所有 debian 主要命令
- react-native - StackNavigator 与 createStackNavigator
- swift - 使用受信任的服务器验证 IAP 收据。如果返回的 JSON 不包含“latest_receipt_info”键,如何确定试用资格?
- javascript - 如何使 scrollIntoView() 在第一次单击时工作(Angular 6)?