我想将文件和文件夹列表添加到列表视图中,但无法这样做。我是android编程的新手。请帮忙
public void ftpPrintFilesList(String dir_path)
{
try {
FTPFile[] ftpFiles = mFTPClient.listFiles(dir_path);
int length = ftpFiles.length;
for (int i = 0; i < length; i++) {
String name = ftpFiles[i].getName();
boolean isFile = ftpFiles[i].isFile();
if (isFile) {
// Log.i(TAG, "File : " + name);
arrayList.add("File : " + name);
}
else {
Log.i(TAG, "Directory : " + name);
arrayList.add("Directory : " + name);
}
}
ListView lv;
lv = (ListView)findViewById(R.id.listView1);
lv.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, arrayList));
} catch(Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
我想您的问题如下:
您的“dir_path”字符串包含无效目录
这样
mFTPClient.listFiles(dir_path);
返回一个长度为0的数组。因此你的int length变量将为0 ,因此没有项添加到arrayList中,因此ListView为空。
也可能是您在try-block中遇到 NullPointer异常,因为找不到listview1。此异常不会导致应用程序崩溃,因为它在try-block中,但您应该能够在日志输出中看到它。
确保在Activity的onCreate()方法中调用了setContentView(yourlayout)。
<强>更新强>
由于您获得 ViewRoot $ CalledFromWrongThreadException ,这意味着您正在从另一个线程执行ftpPrintFilesList()方法,而不是从您调用setContentView()的UI-Thread执行。 将ftpPrintFilesList()的调用移到UI线程以防止此异常。