0

我想将文件和文件夹列表添加到列表视图但无法这样做。我对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();
    }

}
4

1 回答 1

0

我想你的问题如下:

您的“dir_path”字符串包含无效目录

以便

mFTPClient.listFiles(dir_path);

返回一个长度为 0 的数组。因此,您的 int 长度变量将为 0,因此不会将任何项目添加到 arrayList,因此您的 ListView 为空。

也可能是您在 try - 块中收到NullPointer 异常,因为无法找到 listview1。此异常不会导致应用程序崩溃,因为它位于 try - 块中,但是您应该能够在日志输出中看到它。

确保在 Activity 的 onCreate() 方法中调用了 setContentView(yourlayout)。

更新:

由于您收到ViewRoot$CalledFromWrongThreadException,这意味着您正在从另一个线程执行 ftpPrintFilesList() 方法,而不是从调用 setContentView() 的 UI 线程执行。将 ftpPrintFilesList() 的调用移至 UI 线程以防止出现此异常。

于 2013-08-10T16:28:31.790 回答