从sdcard获取所有音频文件并在listview中显示

时间:2013-08-31 05:38:44

标签: android android-listview android-mediaplayer

我想在我的活动列表中显示所有音频文件,并点击其中任何一个想要播放该特定歌曲。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ListView listView = (ListView) findViewById(R.id.listView1);
    lis = new ArrayList<String>();


    file = new File("/sdcard/");
    File list[] = file.listFiles();

    for( int i=0; i< list.length; i++)
    {
            lis.add(list[i].getName());
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, lis);
    listView.setAdapter(adapter); 

1 个答案:

答案 0 :(得分:2)

只需检查扩展程序,即可按照相同的方法进行操作。此外,您应该做的两个重要更改是:绝对路径的额外ArrayList和Environment.getExternalStorageDirectory()的使用。

我有全局变量

ArrayList<String> msqlist;
File listFile[];
ArrayList<String> absolutepath;

现在,这是我的方法:

public void walkdir(File dir) {
    String msqPattern = ".mp3";// Can include more strings for more extensions and check it.

    File[] listFile = dir.listFiles();

    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
              if (listFile[i].getName().endsWith(msqPattern)){
                msqlist.add(listFile[i].getName());
                absolutepath.add(listFile[i].getAbsolutePath());

              }
            }
        }
    }    }

将上述方法称为

walkdir(Environment.getExternalStorageDirectory());//  For /mnt/sdcard

现在,您已将msqlist设置为列表视图,点击列表项后:使用absolutepath.get(position)获取完整路径。