如何在列表视图 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
我在我的应用程序中保存了一些文件,现在我想在我的 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