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

我已经创建了该文件夹,并将图像复制到该文件夹​​进行测试,但失败了。 没有显示图像。另外,我对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 票数:4

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

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

  ask by Seaskyways translate from so

未解决问题?本站智能推荐:

6回复

使用gridview显示SDCard上特定文件夹的图像

我正在尝试创建一个gridview,它载有来自SDCard上的特定文件夹的图像。 该文件夹的路径是已知的,(“/ sdcard / pictures”),但在我在网上看到的示例中,我不确定如何或在何处指定图片文件夹的路径,我想从中加载图像。 我已阅读了几十个教程,甚至是developer.a
1回复

GridView中的自定义适配器

我尝试做一些日历。 我使用自定义适配器将其作为GridView进行。 如何在适配器中结合2个TextView (日期和文本)和图标(红色圆圈)? (例如屏幕)
1回复

在GridView中切换适配器?

我有GridView,我希望能够在适配器之间进行切换。 内容: 我有来自两个不同来源的数据,我希望能够在这些来源之间轻松切换。 是否可以仅切换适配器还是有其他解决方案?
1回复

根据位置更改Gridview的列数

我目前正在构建实现​​GridView的应用程序。 但是,我需要拆分GridView。 例如,在位置zeta处,列数为3,然后在位置2 3 4处,列数变为1。 我环顾四周,但看起来不太可能。 来自iOS背景ive在之前的一些iOS项目中就已经做到了,所以我认为我可以在android中
2回复

Android在Eclipse中将SQLite绑定到GridView

我编写了以下代码以从SQLite数据库检索数据。 然后我使用以下命令在main.java文件中调用此函数 有了光标之后,我设法使用以下代码用一些数据填充myGridView 现在的问题是只有第一行被填充并且前两列,我想要的数据像是forst行(2011-10-27,5,6
1回复

Android使用GridView尝试调用虚拟方法集适配器

这是我在GridView中显示图像和文本的活动。 我正在为此目的进行其他一些活动。 我在使用setAdapter方法时出错。 下面是我的适配器。 这是我的适配器,我不知道哪里出了问题。 开始此活动时,我的应用程序崩溃了。 致命异常
2回复

GridView OnItemClickListener未调用onItemClick

我正在尝试为Gridview中的项目设置OnItemClickListener 。 由于某种原因,从不调用侦听器中的onItemCLick方法。 设置监听器和适配器: 我的适配器: 我很困惑为什么点击监听器不起作用。 这段代码适用于我很多其他地方。
3回复

为什么ImageView.setAlpha()在GridView中将alpha设置为多个ImageView?

我正在实现一个允许选择多张照片的自定义图片库。 我正在使用带有从BaseAdapter扩展的简单ImageAdapter类的GridView 。 这是我的ImageAdapter类: 正确添加了所有图像, onClick()方法工作正常(它将打开正确的图像)。 问题出在
1回复

ListAdapter中的Android Multiple EditText字段

我有一个屏幕(见图),由GridView使用BaseAdapter的自定义扩展填充。 当用户在EditText字段中输入一些文本时,他们输入的文本可能会移动或完全消失。 我假设这与回收视图有关,但我对listadapters的理解很差。 由于Manifest入口android:wi
5回复

Android处理ListView中的许多EditText字段

只是一个基本问题:如果我有几十个属于ListAdapter的EditText字段,那么各个EditText字段如何知道它们属于哪一行? 目前我正在使用TextWatcher来监听文本输入。 我已经尝试扩展TextWatcher,以便我可以将EditText的位置传递给TextWatche