0

我正在创建画廊。我有显示所有图像的网格视图。现在我想这样做,当我们使用复选框选择多个图像时,另一个意图将启动,我已经完成,但现在我想在这个新意图中显示所选图像。

提前谢谢。

4

1 回答 1

0

基本上你想要的是点击按钮开始新的活动而不是吐司,然后显示选定的图像,对吧?

检查第 72 行:selectImages = selectImages + arrPath[i] + "|";

这是图像的路径,而 i 是您要以某种方式保存的位置,因为这样您将知道选择了哪些图像。例如,您可以将其保存为列表或数组,然后在按钮上单击启动新活动,在捆绑包中传递此列表或数组,并在新活动中获取图像 ID 并在位图数组缩略图 [图像 ID] 中查找图像。您将需要更改

private Bitmap[] thumbnails;

公开。试试看,如果您成功了,请告诉我们,如果没有,我们可以进一步帮助您;)

编辑 这里有更多帮助,在 bundle 中传递 int 数组

    Intent myIntent = new Intent(A.this, B.class);
    intent.putIntegerArrayListExtra("arr", pics);//pics is your array with id-s of bitmaps
    startActivity(myIntent);

您将在按钮的 onClick 中添加它而不是 toast,并在下一个 Activity 中使用:

Intent i = getIntent();  
integer [] fromApics = i.getIntegerArrayListExtra("arr");

编辑 2

好的,我会为您编写一些代码,但请阅读并尝试理解它:在您的主要活动中更改以下内容:

selectBtn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            final int len = thumbnailsselection.length;
            int cnt = 0;
            String selectImages = "";
            ArrayList<Integer> pics=new ArrayList(thumbnailsselection.length);
            for (int i =0; i<len; i++)
            {
                if (thumbnailsselection[i]){
                    pics.add(i);
                    cnt++;
                    selectImages = selectImages + arrPath[i] + "|";

                }
            }
            if (cnt == 0){
                Toast.makeText(getApplicationContext(),
                        "Please select at least one image",
                        Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(),
                        "You've selected Total " + cnt + " image(s).",
                        Toast.LENGTH_LONG).show();
                Log.d("SelectedImages", selectImages);
                Intent myIntent = new Intent(AndroidCustomGalleryActivity.this, Test.class);
                 myIntent.putIntegerArrayListExtra("arr", pics);//pics is your array with id-s of bitmaps
                startActivity(myIntent);
            }
        }
    });

还设置在页面可见性的顶部:

public static String[] arrPath;

创建名为 Test 的新 Activity,如下所示:

package com.isummation.customgallery;

导入 java.util.ArrayList;

导入android.app.Activity;导入android.content.Intent;导入android.os.Bundle;

public class Test extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent i = getIntent();  
    ArrayList<Integer> fromApics = i.getIntegerArrayListExtra("arr");
    for(int y=0;y<fromApics.size();y++){
        System.out.println(AndroidCustomGalleryActivity.arrPath[fromApics.get(y)].toString());
    }

}

}

不要忘记在清单文件中添加活动,您将能够在 logcat 中看到打印的图像路径。就是这样,我留给您自定义测试活动并制作所选图像的画廊或其他任何东西

于 2012-12-05T11:36:58.767 回答