在android中获取文件和目录列表

时间:2013-11-05 13:35:35

标签: android

我正在研究一个Android项目,我正在尝试从SD卡获取文件和目录列表。它似乎更少工作,除了文件名输出一堆废话,我不明白为什么。

以下是我用来获取文件列表的代码。

public ArrayList getFileDirectoryListing() {     ArrayList fileAndDirectories = new ArrayList();

final String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
    File[] files = Environment.getExternalStorageDirectory().listFiles();
    for (int i = 0; i < files.length; i++)
    {
        FileDirectoryDetails fileDirectoryDetails = new FileDirectoryDetails();
        fileDirectoryDetails.path = files[i].getName();
        if (files[i].isDirectory())
        {
            fileDirectoryDetails.fileOrDirectory = FileOrDirectory.Directory;
        }
        else
        {
            fileDirectoryDetails.fileOrDirectory = FileOrDirectory.File;
        }
        fileAndDirectories.add(fileDirectoryDetails);
    }
}

return fileAndDirectories;

}

以下是我用来设置列表适配器的代码

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    listView = getListView();

    ArrayList<FileDirectoryDetails> filesAndDirectories = getFileDirectoryListing();
    fileDirectoryDetailsArrayAdapter = new 
            ArrayAdapter<FileDirectoryDetails>(this, android.R.layout.simple_list_item_1, filesAndDirectories); 

    setListAdapter(fileDirectoryDetailsArrayAdapter);
}

下面是我在列表视图中返回的内容的屏幕截图,而不是实际的文件名。

Screenshot of file listings returned

1 个答案:

答案 0 :(得分:1)

请务必覆盖toString()返回有意义的详细信息中的FileDirectoryDetails。目前您使用的是默认toString()

或者只使用路径字符串而不是整个FileDirectoryDetails

填充数组

或者,覆盖适配器的getView(),将TextView的文字设置为details.path