在android中更新包含外部存储中文件夹名称的listview

在android中更新包含外部存储中文件夹名称的listview,android,listview,android-listview,android-external-storage,Android,Listview,Android Listview,Android External Storage,我有一个列表视图,显示所有外部存储文件夹的名称。我想在应用程序创建或删除新文件夹时自动刷新或更新列表视图。但在我再次打开该布局文件之前,它不会自动更新。我正在使用Get Files()方法获取文件,然后在列表视图中查看它们? 如有任何帮助,我们将不胜感激 我正在使用此代码显示所有文件夹 try { ListView lv; File path=Environment.getExternalStorageDirectory(); ArrayList<Str

我有一个
列表视图
,显示所有外部存储文件夹的名称。我想在应用程序创建或删除新文件夹时自动刷新或更新
列表视图
。但在我再次打开该布局文件之前,它不会自动更新。我正在使用Get Files()方法获取文件,然后在
列表视图中查看它们?
如有任何帮助,我们将不胜感激
我正在使用此代码显示所有文件夹

  try {
        ListView lv;
    File path=Environment.getExternalStorageDirectory();
    ArrayList<String> FilesInFolder = GetFiles(path);
    lv = (ListView)findViewById(R.id.filelist);
    final ArrayAdapter<String> array=new ArrayAdapter<String> (this,
            android.R.layout.simple_list_item_1, FilesInFolder);
    lv.setAdapter(array);
   }
试试看{
ListView lv;
文件路径=Environment.getExternalStorageDirectory();
ArrayList FileInfolder=GetFiles(路径);
lv=(ListView)findViewById(R.id.filelist);
最终ArrayAdapter数组=新ArrayAdapter(此,
android.R.layout.simple_list_item_1,fileinfolder);
lv.setAdapter(阵列);
}
这是获取文件的方法

   public ArrayList<String> GetFiles(String DirectoryPath) {
   ArrayList<String> MyFiles = new ArrayList<String>();
   File f = new File(DirectoryPath);
   f.mkdirs();
   File[] files = f.listFiles();
   for (int i=0; i<files.length; i++) 
       MyFiles.add(files[i].getName());

  return MyFiles;
}
public ArrayList GetFiles(String DirectoryPath){
ArrayList MyFiles=新建ArrayList();
文件f=新文件(目录路径);
f、 mkdirs();
File[]files=f.listFiles();

对于(int i=0;i假设您已经有了这段代码:

 ListView lv;
 File path=Environment.getExternalStorageDirectory();
 ArrayList<String> FilesInFolder = GetFiles(path);
 lv = (ListView)findViewById(R.id.filelist);
 final ArrayAdapter<String> array=new ArrayAdapter<String> (this,
 android.R.layout.simple_list_item_1, FilesInFolder);
 lv.setAdapter(array);
它会让适配器知道它的数据现在已经用更多的数据更新了,并且会重新绘制列表的内容

您还可以稍微更改代码以进行更新:

public void updateList() {
            File f = new File(DirectoryPath);
            f.mkdirs();
            File[] files = f.listFiles();
            for (int i=0; i<files.length; i++) 
                    if (!FilesInFolder.contains(files[i].getName())
                        FilesInFolder.add(files[i].getName());
            array.notifyDatasetChanged();
}
public void updateList(){
文件f=新文件(目录路径);
f、 mkdirs();
File[]files=f.listFiles();

对于(inti=0;i我认为您可能希望采用更规范的方法,使用一个加载程序来监视文件夹作为其数据源。 您也可以将游标装入器与游标适配器结合使用,但这取决于您。
您可以找到文档。

创建新文件夹时,您只需回忆一下yopur listview亲爱的,就是这样
public void updateList() {
            File f = new File(DirectoryPath);
            f.mkdirs();
            File[] files = f.listFiles();
            for (int i=0; i<files.length; i++) 
                    if (!FilesInFolder.contains(files[i].getName())
                        FilesInFolder.add(files[i].getName());
            array.notifyDatasetChanged();
}