首页 > 解决方案 > 在 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;

    }

如何从当前图像中获取标题?

标签: androidandroid-viewpager

解决方案


因为 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;

    }

推荐阅读