0

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

@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); 
4

1 回答 1

2

您可以通过检查扩展来遵循与问题相同的方法。此外,您应该进行的 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)以获取它的完整路径。

于 2013-09-02T12:11:12.790 回答