Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从SD卡读取栅格视图库_Java_Android_Eclipse_Gridview - Fatal编程技术网

Java 从SD卡读取栅格视图库

Java 从SD卡读取栅格视图库,java,android,eclipse,gridview,Java,Android,Eclipse,Gridview,我有一个网格视图,它将特定文件夹中的所有图像加载到自己的文件夹中。我试图获得它,这样当用户在网格视图中单击单个图像时,它会在图像视图中设置自身的放大版本。我想我需要尝试做的是,当创建网格视图并将图像加载到其中时,我需要在创建的imageview上附加一个数组,将图像保存在网格视图中,并将其放置在SD卡中。因此,当图像被加载时;保存图像的位置并将其附加到gridview中的imageview。到目前为止,我将从SD卡加载的最后一张图片加载到放大的图像视图中 Main.java public cla

我有一个网格视图,它将特定文件夹中的所有图像加载到自己的文件夹中。我试图获得它,这样当用户在网格视图中单击单个图像时,它会在图像视图中设置自身的放大版本。我想我需要尝试做的是,当创建网格视图并将图像加载到其中时,我需要在创建的imageview上附加一个数组,将图像保存在网格视图中,并将其放置在SD卡中。因此,当图像被加载时;保存图像的位置并将其附加到gridview中的imageview。到目前为止,我将从SD卡加载的最后一张图片加载到放大的图像视图中

Main.java

public class Main extends Activity{

ImageView photoHolder;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallery);


    photoHolder = (ImageView) findViewById(R.id.photoHolderView);
    photoHolder.setVisibility(View.GONE);
    GridView gridView = (GridView) findViewById(R.id.grid_view);
    gridView.setVisibility(View.VISIBLE);
    gridView.setAdapter(new ImageAdapter(this));
    gridView.setOnItemClickListener(new OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> a, View view, int position, long id) {

            photoHolder.setVisibility(View.VISIBLE);
            photoHolder.setImageURI(ImageAdapter.uri);


    }
});
}

另一方面,由于内存泄漏,它崩溃了很多,你知道如何在从SD卡加载时创建“样本/缩略图”大小的图像吗?

你说得对,你需要跟踪每个缩略图的文件名/位置。最简单的方法是修改
getView
方法并添加一行:

imageView.setImageURI(uri);
imageView.setTag(uri);   //new line added
return imageView;
然后,在您的
onItemClickListener
中,您将获得单击的imageview,并获得其标记,这将是SD卡上的文件名:

public void onItemClick(AdapterView<?> a, View view, int position, long id) {

    photoHolder.setVisibility(View.VISIBLE);
    photoHolder.setImageURI((Uri)view.getTag());
}
public void onItemClick(适配器视图a、视图视图、整型位置、长id){
photoHolder.setVisibility(视图.可见);
setImageURI((Uri)view.getTag());
}

至于加载位图时的内存问题,您可以使用
BitmapFactory.Options
指示缩放因子-请在Android开发者网站上查看-它包含您需要的示例代码。

非常感谢您的帮助。一切正常并已分类:)
public void onItemClick(AdapterView<?> a, View view, int position, long id) {

    photoHolder.setVisibility(View.VISIBLE);
    photoHolder.setImageURI((Uri)view.getTag());
}