将项目(文件)从目录添加到微调器列表

问题描述 投票:0回答:1

我正在尝试将目录中的文件添加到微调器列表中,但我什么也没有得到,(微调器列表为空)但文件夹中包含 3 个文件。

我检查了文件夹是否存在,(文件夹存在)

然后我尝试显示一条消息,告知文件夹中是否找到任何文件(我没有收到消息)

这是我到目前为止所尝试的:

public class MainActivity : Activity
{
    Button btnGetFiles;
    Spinner spinnerGetFiles;
    List<string> fileList;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Main);
        spinnerGetFiles = FindViewById<Spinner>(Resource.Id.spinnerGetFiles);
        btnGetFiles = FindViewById<Button>(Resource.Id.btnGetFiles);

        btnGetFiles.Click += delegate 
        {
            fileList = GetFilesFromDirectory("/storage/emulated/0/MyFolder");
            ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, fileList);
            spinnerGetFiles.Adapter = adapter;
        };
    }

    List<string> GetFilesFromDirectory(string strDirectoryPath)
    {            
        List<string> files = new List<string>();
        if (Directory.Exists(strDirectoryPath))
        {
            Toast.MakeText(Application.Context, "Directory found", ToastLength.Long).Show();
            string[] fileList2 = Directory.GetFiles(strDirectoryPath);
            foreach (string file in fileList2)
            {
                files.Add(Path.GetFileName(file));
                Toast.MakeText(Application.Context, "File found : " + file, ToastLength.Long).Show();                   
            }
        }
        else { Toast.MakeText(Application.Context, "No directory was found!!", ToastLength.Long).Show(); }
        return files;
    }
}
c# android xamarin spinner
1个回答
0
投票

从您访问的存储(

/storage/emulated/0/
)中,我们可以发现您想要访问
external storage

要访问外部存储,我们需要添加外部存储权限,如下:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

并且我们还需要在Android 6.0(API级别23)之后添加运行时权限

这里有一个关于如何访问

external storage
的官方示例,您可以在这里查看:本地文件

欲了解更多信息,您可以查看:外部存储

作为测试,我在示例代码中添加了一个按钮,以使用以下代码获取生成的文件

count.txt
本地文件,它可以正确列出文件:

    List<string> GetFilesFromDirectory(string strDirectoryPath)
    {
        List<string> files = new List<string>();


        string  dir = GetExternalFilesDir(null).AbsolutePath;   

        if (Directory.Exists(dir))
        {
            Toast.MakeText(Application.Context, "Directory found", ToastLength.Long).Show();
            string[] fileList2 = Directory.GetFiles(dir);

            System.Diagnostics.Debug.WriteLine("the number of files is: " + fileList2.Count());

            foreach (string file in fileList2)
            {
                files.Add(Path.GetFileName(file));
                Toast.MakeText(Application.Context, "File found : " + file, ToastLength.Long).Show();
            }
        }
        else { Toast.MakeText(Application.Context, "No directory was found!!", ToastLength.Long).Show(); }
        return files;
    }
© www.soinside.com 2019 - 2024. All rights reserved.