【问题标题】:Automatic adding of elements to an array自动向数组添加元素
【发布时间】:2012-04-20 15:04:45
【问题描述】:

您好,我不是特别擅长 Java,所以请多多包涵。我现在正在尝试编写一个非常简单的 Android 应用程序,我需要一些编码方面的帮助。

问题是,我有一台服务器可以自动生成 .png 文件并按数字顺序将它们保存到公共目录中。更新每天进行,并不详尽。

无论如何,我可以将动态值分配给我的应用程序中的数组吗?

            private String[] myRemoteImages = {
            "http://hypotheticalurl1.png",
            "http://hypotheticalurl2.png",
            "http://hypotheticalurl3.png",
            "http://hypotheticalurl4.png",
            "http://hypotheticalurl5.png",
            "http://hypotheticalurl6.png",
            "http://hypotheticalurl7.png",
            "http://hypotheticalurl8.png",
            "http://hypotheticalurl9.png",
            "http://hypotheticalurl10.png",
            "http://hypotheticalurl11.png",
            "http://hypotheticalurl12.png",
            //...blah blah blah
            // these are all dynamically created so I won't know what is the last number on the list
    };

这个数组最终将用于使用应用程序从我的服务器获取图像。到目前为止它有效,但这仅适用于硬编码的 URL。我希望 URL 是动态的,因为图像的数量每天都会变化。

我怀疑正则表达式在 Java 中是否能很好地工作,但我又不是专家。正在考虑在服务器端编写一个脚本,生成一个现有值列表,并以某种方式使用 android 应用程序解析它。

谁能指出我正确的方向?提前致谢。

澄清:

在应用程序运行时,数组不必动态调整大小。

我需要一种方法来读取远程目录中现有图像的列表并传递该信息以在运行时自动填充数组。

已解决

伙计们,感谢您的帮助。对不起,如果我不够清楚。

我找到了一种方法。基本上很简单,就是在服务器端的 shell 脚本中追加一行代码,在生成图像的同时生成现有图像 URL 的文本列表。

之后,我在应用程序上使用了 BufferedReader 和 openStream 的组合,将远程文本文件解析为 String 数组。

【问题讨论】:

  • 但是你可以将这个数组转换为ArrayList 就像ArrayList assetList = Arrays.asList(myRemoteImages); 然后使用assetList.size() 来获取数组列表的大小你有任何问题吗?
  • myRemoteImages 数组来自服务器,格式为 json 或 xml api?
  • 该数组在应用程序本身中声明。服务器此时仅生成图像。由于 URL 目前是硬编码的,因此两者之间没有信息传递。
  • 好的,那么你可以用变量编辑问题,你正在从服务器接收响应

标签: java android arrays parsing


【解决方案1】:

感谢您的帮助。对不起,如果我不够清楚。

我找到了一种方法。基本上很简单,就是在服务器端的 shell 脚本中追加一行代码,在生成图像的同时生成现有图像 URL 的文本列表。

之后,我在应用程序上使用了 BufferedReader 和 openStream 的组合,将远程文本文件解析为 String 数组。

【讨论】:

    【解决方案2】:

    使用数组可以:

    • 改变数组的元素

    但你不能:

    • 添加或删除元素。数组中固定的元素数。可以找到一些解决方法,例如在使用数组中的值时放置空值并丢弃它们。但这比真正有用更麻烦。

    另一方面,如果您想要一个完整的动态“数组”:使用列表 (java.util.List)。 ArrayList 在这里会很有趣,甚至是 Vector,因为您可能需要围绕这个数组进行一些多线程处理。使用列表,您可以添加和删除元素,大小可以变化并且可以替换元素。

    【讨论】:

    • 如果你有一些空闲时间并且有空闲探索一些不错的技术,试试番石榴。 code.google.com/p/guava-libraries
    • 哦,等等,我想我还不够清楚。或者可能错误地使用了这些术语。应用程序在运行时不必动态地重新创建数组。它只需要在每个运行时都有正确的数组。
    • 你不是在程序生命周期中得到你的下载网址吗?你应该。
    【解决方案3】:

    在这种情况下,我会使用 ArrayList。然后您不必知道要添加的元素数量,并且在末尾追加元素非常简单。

    private List<String> list = new ArrayList<String>();
    

    然后简单地添加元素

    list.add("http://hypotheticalurl1.png");
    

    问候, 帕特里克

    【讨论】:

    • 听起来像是这里大多数答案的选择方法。问题是,我还需要一种方法来了解 URL 列表,因为我不知道编号何时结束,因为它每天都会自行更新。
    【解决方案4】:

    而不是使用字符串数组 使用ArrayList&lt;String&gt; 它将为您在运行时添加和删除项目提供更大的灵活性,请参阅此链接...http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html

    听说您可以在 arraylist 上找到示例...http://www.java2s.com/Tutorial/Java/0140_Collections/0160_ArrayList.htm

    希望对你有帮助

    【讨论】:

      【解决方案5】:

      根据您的场景,您需要具备以下条件:

      1- 一个 Web 服务,它有一种方法可以让您获得可用图像名称的列表。

      2- 您需要为您的android 应用程序提供Web 服务客户端,我建议您使用 KSOAP 2,因为它广为人知且易于实现。 (如果你不知道如何在你的程序中使用kso​​ap,我可以给你一些示例代码)

      3- 您需要使用 ArrayList(java.util) 来保存动态大小的数组。

      【讨论】:

        【解决方案6】:

        嘿,你可以通过
        ArrayList stringList = new ArrayList();

        stringList.add("Item");
        

        【讨论】:

          猜你喜欢
          • 2014-08-03
          • 1970-01-01
          • 2012-03-23
          • 1970-01-01
          • 1970-01-01
          • 2022-01-20
          • 2011-08-11
          • 2015-09-02
          • 1970-01-01
          相关资源
          最近更新 更多