使GridView从特定文件夹中获取图像

时间:2014-04-20 16:10:53

标签: android image gridview uri listadapter

我是Android应用程序制作的新手,我仍然是一个有点知识的初学者。我一直在尝试制作一个像画廊一样工作的Android应用程序,但它只显示特定文件夹下的图像。对于用户界面,我开始只使用GridView(或TwoWayGridView从后者派生而来),并且一直试图让这个GridView从此文件夹中获取其内容。< / p>

我制作了这个文件夹并将图像复制到它进行测试并失败了。没有显示图片.Plus我对CursorsListAdapters不太熟悉。我确定正确的事情是活动的权限,清单和布局。此外,我相信我的问题在于URI。请检查下面的代码:

一些诽谤:

Uri contentUri;

Cursor mImageCursor;
TwoWayGridView mImageGrid;
ListAdapter mAdapter;

String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();

onCreate方法:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gallery);

        File motherDirectory = new File(sdCard+"/Favory");
        if(!motherDirectory.exists()){
            motherDirectory.mkdir();
        }


        MediaScannerConnection.scanFile(this, new String[]{motherDirectory.getAbsolutePath()}   ,null, new MediaScannerConnection.OnScanCompletedListener() {

            @Override
            public void onScanCompleted(String path, Uri uri) {
                // TODO Auto-generated method stub
                contentUri = uri ;
                initGrid(uri);
            }
        });



    }

initGrid(Uri)方法:

private void initGrid(Uri folderUri) {



mImageCursor = this.getContentResolver().query(folderUri,
        ImageThumbnailAdapter.IMAGE_PROJECTION, null, null,
        MediaStore.Images.ImageColumns.DISPLAY_NAME);
mImageGrid = (TwoWayGridView) findViewById(R.id.gridview);
mAdapter = new ImageThumbnailAdapter(this, mImageCursor);
mImageGrid.setAdapter(mAdapter);

mImageGrid.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(TwoWayAdapterView<?> parent, View v, int position, long id) {
        Log.i(TAG, "showing image: " + mImageCursor.getString(ImageThumbnailAdapter.IMAGE_NAME_COLUMN));
        Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
});
}

感谢您的帮助,如果有更简单的替代方法,请告诉我,我比现在的方法更关心结果。如果您需要任何信息或更多信息,请在下面的评论中告诉我。再次感谢!

1 个答案:

答案 0 :(得分:4)

要阅读文件夹的文件,您可以使用此功能(来自this帖子):

String directoryName = Environment.getExternalStorageDirectory().toString()+"/YourFolder/";

public ArrayList<File> listf(String directoryName, ArrayList<File> files) {
    File directory = new File(directoryName);

    // get all the files from a directory
    File[] fList = directory.listFiles();
    for (File file : fList) {
        Log.e("path : ","  "+file);
        if (file.isFile()) {
            files.add(file);
        } else if (file.isDirectory()) {
            listf(file.getAbsolutePath(), files);
        }
    }
    return files;
}

然后你应该把这个文件列表加载到你的GridView适配器,我建议你使用Universal Image Loader

您只需在该位置提供文件路径和Adapter ImageVIew

loadImageUtil.loadBitmapToImageView(imageView, youArrayList.get(position));

有关如何使用此库的更多信息,您可以看到示例,网格视图中有一个示例gridView