【问题标题】:Fetch all audio file from sdcard and show in listview从 sdcard 中获取所有音频文件并在列表视图中显示
【发布时间】:2013-08-31 05:38:43
【问题描述】:

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

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

【问题讨论】:

标签: android android-listview android-mediaplayer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2014-02-19
    • 2013-06-28
    • 2014-06-01
    相关资源
    最近更新 更多