android - 如何在ListView中显示SD卡上的文件?

标签 android listview sd-card

我想创建一个按钮,单击该按钮将转到一个类,该类使用 ListView 显示 SD 卡中的所有媒体文件。

从列表中选择后,它将选择的文件名返回给主类。如果返回的文件是图像文件,它将显示在 ImageView 中,如果返回的文件是音频文件,它将只显示一个图标。

最佳答案

添加方法 GetFiles()到你的程序。调用它以获得 ArrayList<>所有的文件。然后您可以使用它来填充您的 listview .您需要提供字符串参数 DirectoryPath .

函数:

public ArrayList<String> GetFiles(String DirectoryPath) {
    ArrayList<String> MyFiles = new ArrayList<String>();
    File f = new File(DirectoryPath);

    f.mkdirs();
    File[] files = f.listFiles();
    if (files.length == 0)
        return null;
    else {
        for (int i=0; i<files.length; i++) 
            MyFiles.add(files[i].getName());
    }

    return MyFiles;
}

使用示例:

@Override
public void onCreate() {
// Other Code

    ListView lv;
    ArrayList<String> FilesInFolder = GetFiles("/sdcard/somefolder");
    lv = (ListView)findViewById(R.id.filelist);

    lv.setAdapter(new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, FilesInFolder));

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            // Clicking on items
         }
    });
}

确保外部存储可读: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

根据名称/扩展名过滤文件: How to acces sdcard and return and array with files off a specific format?

关于android - 如何在ListView中显示SD卡上的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5800981/

相关文章:

c++ - 检测SD卡硬件盘符

c - 在 stm32F407 上使用 FatFS 和 SD 卡几分钟后停止写入

android - 使用android intent在特定时间打开youtube视频

android - 一个带有所有拦截器的 OkHttpClient 与多个带有特定拦截器的 OkHttpClient

android - 当我开发Android应用程序时,我想在较低的Android版本中使用较高API的方法。怎么做?

jQuery Mobile ListView : Change a Value When Clicked

java - 上下文菜单可以打开 ImageView 吗?

android - "onAdLeftApplicationDone"的事件?

android - 单击 ListView 项时播放声音

android - 将图像从 Android 上的可绘制资源保存到 sdcard