我已经在stackoverflow上查看了这些问题:
http://stackoverflow.com/questions/22332957/display-media-files-in-listview-nullpointerexception
http://stackoverflow.com/questions/9317483/showing-a-list-of-files-in-a-listview
http://stackoverflow.com/questions/5800981/how-to-display-files-on-the-sd-card-in-a-listview
http://stackoverflow.com/questions/9782168/how-to-show-audio-files-in-a-listview-in-android
但是他们都没有为我的代码工作。我不确定为什么它不起作用?
我要做的是创建一个列表视图,显示特定文件夹中的所有文件。我想要显示的特定文件夹是“下载”文件夹(如果将手机插入USB,则可以看到该文件夹)。为了澄清,在我的电脑上,目录看起来像这样:
This PC\Nexus 4\Internal storage\Download
这是我的代码(在我的onCreate方法中):
arraylist = new ArrayList<String>();
listview = (ListView) findViewById(R.id.list);
File file = new File(Environment.DIRECTORY_DOWNLOADS);
File[] list = file.listFiles();
if (list.length == 0)
{
Log.w("oh no", "oh no");
}
else {
for( int i=0; i < list.length; i++)
{
arraylist.add( list[i].getName() );
}
}
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1
,arraylist);
listview.setAdapter(adapter);
我试过了
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString());
我也试过
File directory = Environment.getExternalStorageDirectory();
file = new File(directory+ "/Download");// + "/Test");
虽然它仍然无效。
我的log cat表示在声明for循环的行上有一个nullpointerexception:
for( int i=0; i < list.length; i++)
非常感谢你!
答案 0 :(得分:0)
我已经弄明白我做错了什么。 JRowan告诉我的是正确的。为了获取我的设备的下载文件夹的目录,我需要使用这段代码:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
最初,它没有用,因为我忘了将此权限添加到我的Android清单中:
android.permission.WRITE_EXTERNAL_STORAGE
总而言之,我忘了写这个重要的许可。没有它,该目录实际上让我:/ storage / emulated / 0 / download(这显然不是我想要的)。
感谢两位试图回答我问题的人!