【问题标题】:Making a GridView take images from a specific folder让 GridView 从特定文件夹中获取图像
【发布时间】:2014-04-20 16:10:52
【问题描述】:

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

我已创建此文件夹并将图像复制到其中进行测试,但失败了。没有显示图像。另外我对CursorsListAdapters 不是很熟悉。我确定正确的是活动的权限、清单和布局。此外,我相信我的问题在 URIs 附近。请检查我下面的代码:

一些命名:

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);
    }
});
}

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

【问题讨论】:

    标签: android image gridview uri listadapter


    【解决方案1】:

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

    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

    您只需在该位置提供文件路径和适配器 ImageVIew

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

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

    【讨论】:

    • 这个方法是递归的吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多