java - Android - 如何将一个扩展名的文件添加到列表视图
问题描述
我正在尝试制作一个可以在我的手机中找到所有 pdf 的应用程序,但是应用程序崩溃了。我已经获得了在存储上写入的许可,但它没有帮助。这是我的代码:
package prototype.reader.com;
import android.app.*;
import android.os.*;
import android.content.*;
import android.view.*;
import java.util.*;
import java.io.*;
import android.widget.*;
public class lst extends Activity
{
ArrayList<String> bk;
ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, bk);
private ListView lv;
protected void onCreate(Bundle savedinstancestate){
super.onCreate(savedinstancestate);
setContentView(R.layout.listpdfs);
lv = findViewById(R.id.lpdf);
File sdCard = Environment.getExternalStorageDirectory();
recursiveFind(sdCard);
lv.setAdapter(ad);
}
public void recursiveFind(File file) {
File[] f = file.listFiles();
for (File ff : f) {
if (ff.isDirectory()) recursiveFind(file);
if (ff.isFile() && ff.getPath().endsWith(".pdf")) {
bk.add(ff.toString());
}
}
}
}
解决方案
试试这个,你在 arraylist 添加数据之前声明适配器错误,你设置适配器使用下面的代码
public class lst extends Activity {
ArrayList<String> bk;
ArrayAdapter<String> ad;
private ListView lv;
protected void onCreate(Bundle savedinstancestate) {
super.onCreate(savedinstancestate);
setContentView(R.layout.listpdfs);
bk = new ArrayList<>();
lv = findViewById(R.id.lpdf);
File sdCard = Environment.getExternalStorageDirectory();
recursiveFind(sdCard);
ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, bk);
lv.setAdapter(ad);
}
public void recursiveFind(File file) {
File[] f = file.listFiles();
for (File ff : f) {
if (ff.isFile() && ff.getPath().endsWith(".pdf")) {
bk.add(ff.toString());
}
}
}
}
推荐阅读
- c++ - 从 make_integer_sequence 到 integer_sequence 的转换错误
- node.js - W: Webpacker requires Node.js ">=10.17.0" and you are using v6.17.1
- java - 坚持地图
在安卓中 - javascript - 收到此错误:未捕获的 ReferenceError: $ is not defined; 加载资源失败:服务器响应状态为 404
- python - appium python error:This version of ChromeDriver only supports Chrome version 83
- python-3.x - 如何在同一行中获取 BeautifulSoup 信息?
- flutter - Inject Repository with BlocProvider in onGenerateRoute
- c# - .NET中奇怪的双减法结果
- sql - 我无法处理 SQL Server 中的 char(220) 或 SELECT 或 REPLACE 或任何其他函数
- xquery - arg1 不是 map:map marklogic 类型