0

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

您可以在我的屏幕截图中看到所有文件,我只想显示 .txt 文件

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

void ShowSavedFiles(){
    SavedFiles = fileList();

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

    listSavedFiles.setAdapter(adapter);
}
4

5 回答 5

0

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

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
于 2017-01-16T17:35:47.367 回答
0

列出 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

于 2018-02-21T04:52:04.190 回答
0

尝试这个:

搜索特定值并添加它们

    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();
}
于 2017-01-16T18:08:02.607 回答
0

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

于 2017-01-16T17:25:55.740 回答
0

这是解决方案:

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);}
于 2017-01-17T21:50:20.747 回答