如何在列表视图 android 中显示内部存储中的特定文件?

How to display specific file on the internal storage in listview android?

我在我的应用程序中保存了一些文件,现在我想在我的 listview 上显示以 .txt 结尾的文件,而不是全部。你能帮帮我吗?

这是我生成列表视图的方式:

void ShowSavedFiles(){
    SavedFiles = fileList();

    ArrayAdapter adapter = new ArrayAdapter<String>(this,
                                  android.R.layout.simple_list_item_1,
                                  SavedFiles);

    listSavedFiles.setAdapter(adapter);
}

您需要修改 fileList 方法以过滤掉其他文件,因为它看起来像是您的适配器获取的唯一数据。

您必须创建一个仅包含以 .txt 结尾的文件名的列表,如果您使用 Java8,您可以这样做:

SavedFiles = fileList().stream()       // Convert list to stream
    .filter(fileName -> fileName.endsWith(".txt"))  // Filters filename to only keep ones that ends with ".txt"
    .collect(Collectors.toList());   // Then collect to a list

试试这个:

搜索特定值并添加它们

    public void search(){

    List <String> listClone = new ArrayList<String>(); 
           for (String string : SavedFiles) {
               if(string.matches(".txt")){
                   listClone.add(string);
               }
           }
     }

更新 listview 使用:updatedData(listClone)

 public void updatedData(List itemsArrayList) {

    adapter .clear(); 

    if (itemsArrayList != null){

        for (Object object : itemsArrayList) {

            adapter .insert(object, mAdapter.getCount());
        }
    }

    adapter .notifyDataSetChanged();
}

解决方法如下:

void ShowSavedFiles(){ArrayList<String> filteredList = new ArrayList<String>();
SavedFiles = fileList();

for(String str: SavedFiles) {
    if (str.trim().contains("_cred.txt")) {
                  filteredList.add(str.trim());}
     }
           ArrayAdapter adapter
                = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                filteredList);

        listSavedFiles.setAdapter(adapter);}

将 android 中所有特定类型的文档文件从外部存储中列出到 ListView 小部件。

ArrayList<String> filenames;
ArrayAdapter<String> adapter;

// onCreate method

filelist =  findViewById(R.id.fileList);  //filelist is ListView widget
    filenames = new ArrayList<>();
    getFiles();         //  files funtions
    adapter=new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_list_item_1, filenames);
    filelist.setAdapter(adapter);

// getFiles() is method for getting and filtering all doccuments files from external storage

private void  getFiles() {

    File path = Environment.getExternalStorageDirectory();
    String filename ;
    Queue<File> files = new LinkedList<>();         //Linklist

    files.addAll(Arrays.asList(path.listFiles()));  //adding all files of path in linklist

    while (!files.isEmpty()){
        File file = files.remove();
        if (file.isDirectory()){
            files.addAll(Arrays.asList(file.listFiles()));


        }
        else if (file.getName().endsWith(".doc")||file.getName().endsWith(".xls")||file.getName().endsWith(".ppt")){   //filtering files
            filename = file.getName();               // according to their extension
            filenames.add(filename);              //filenames is string ListArray

        }



    }


}

只需将 .doc.xls 等字符串值更改为 .your_file_extension