【问题标题】:Unable to add items to listview android eclipse project无法将项目添加到listview android eclipse项目
【发布时间】:2013-08-10 16:18:23
【问题描述】:

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

}

【问题讨论】:

  • 您的错误信息是什么?什么不工作?列表是空的吗?应用会崩溃吗?
  • 列表视图保持为空。
  • 你的“int length”变量是0吗?
  • 我认为不,我将 lv.setAdapter 代码添加到单独的按钮,然后它无需任何修改即可工作。我不明白这里有什么问题。

标签: android eclipse listview ftp


【解决方案1】:

我想你的问题如下:

您的“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 线程以防止出现此异常。

【讨论】:

  • 否,列表不为空。我在 logcat 中检查了它
  • 您是否遇到异常(在您的 try 块内),以至于您的初始化 Listview 的代码甚至没有被执行?
  • 是的,“android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触及它的视图。”
  • 如果你得到这个andro id.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views,这意味着你在另一个线程中执行作业,尝试将代码块移动到runOnUIThread方法中。希望这会有所帮助。
猜你喜欢
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多