Android: 使用 Picasso 以全屏模式显示图像

Android: Display images in full screen mode using Picasso

您好,我使用 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;

这是我的第二个 activity(名为 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);

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

Grid View Android Doc

这个 link 有一个易于理解的代码,可以准确地说明您要执行的操作。使用位置来查找您正在单击的元素并获取相应的图像 url

看起来你每次都在调用 ls.setOnItemClickListener() getView() returns.

AdapterView.OnItemClickListener 是整个 AdapterView 的单个侦听器,您打算通过使用其 position 参数。

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

1) 将 ls.setOnItemClickListener()getView()...

2) 更改

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

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

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