【问题标题】:Android: Display images in full screen mode using PicassoAndroid:使用毕加索以全屏模式显示图像
【发布时间】:2018-01-10 05:58:06
【问题描述】:

您好,我使用 Picasso 在 gridView 中显示了一些图像,当我尝试以全屏模式(在新活动内)打开每个图像(在 onItemClickListener 之后)时,无论我点击什么图像,它都只显示我的 gridView 中的第一张图像,这个是我的问题。 这是我的代码,我在其中显示来自 gridView 和 OnItemClickListener 中的 url 的图像。

Picasso.with(ToolDescription.this)
       .load(SaveSettings.ServerURL +"Images/"+ imagepath)
       .into(imageView);

       ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(ToolDescription.this, ImageFull.class);
                intent.putExtra("imagepath", SaveSettings.ServerURL +"Images/"+ imagepath);
                startActivity(intent);
            }
        });

            return myView;

这是我想要显示点击的图像的第二个活动(名为 ImageFull):

ImageView imageView = (ImageView) findViewById(R.id.fullImage);
String imagepath = getIntent().getStringExtra("imagepath");

    Picasso.with(ImageFull.this)
                .load(imagepath)
                .noFade()
                .resize(800, 800)
                .centerCrop()
                .into(imageView);

【问题讨论】:

    标签: android gridview picasso


    【解决方案1】:

    要么为每个图像视图设置单独的点击监听器,要么使用 int 位置从你的 gridview 项目数组中提取正确的图像路径。

    Grid View Android Doc

    此链接有一个易于遵循的代码,可以准确了解您要执行的操作。使用该位置查找您正在单击的元素并获取相应的图像网址

    【讨论】:

    • 感谢@AcidBurn314
    【解决方案2】:

    看起来正在发生的事情是每次getView() 返回时您都在调用ls.setOnItemClickListener()

    AdapterView.OnItemClickListener 是整个AdapterView 的单个侦听器,您可以使用position 参数区分哪个 项被点击。

    我不确定imagepath 来自getView() 内部的什么地方,但我认为它类似于String imagepath = getItem(position).getImagePath()。如果是这种情况,您可以通过以下方式解决您的问题:

    1) 将ls.setOnItemClickListener() 移出getView()... 可能移至您的onCreate() 或您设置GridView 的任何位置。

    2) 改变

    intent.putExtra("imagepath", SaveSettings.ServerURL +"Images/"+ imagepath);
    

    String currentImagePath = getItem(position).getImagePath();
    intent.putExtra("imagepath", SaveSettings.ServerURL +"Images/"+ currentImagePath);
    

    可能会有语法错误,因为我看不到您的其余代码,但希望这足以让您能够处理它们。

    【讨论】:

    • 非常感谢@Ben P 很好的回答
    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2018-08-20
    • 1970-01-01
    • 2018-04-29
    • 2019-12-12
    • 1970-01-01
    • 2018-06-22
    • 2021-06-09
    相关资源
    最近更新 更多