我想创建一个按钮,单击该按钮将转到一个类,该类使用ListView显示SD卡中的所有媒体文件.
从列表中选择后,它将返回选择的主文件名.如果返回的文件是图像文件,它将显示在ImageView中,如果返回的文件是音频文件,它只会显示一个图标.
解决方法
在程序中添加一个方法GetFiles().调用它来获取ArrayList<>所有文件.然后,您可以使用它来填充列表视图.您需要提供String参数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?