【问题标题】:Android Dynamic ArrayAndroid 动态数组
【发布时间】:2011-03-28 06:49:35
【问题描述】:

我正在通过 Android Pull Parser 技术解析 XML 文件。首先,看看下面的 XML 文件:

<childs>
    <students>
        <name> hello </name>
        <address> xyz </address>
    </stdents>      

    <students>
        <name> abc </name>
        <address> def </address>
    </stdents>      

</childs>

假设我正在解析上述文件。现在,我的问题是我想为名称和地址创建一个单独的数组。所以在解析时,我想将第一个学生的数据存储在name[0]address[0] 中,并将下一个学生的数据存储在name[1]address[1] 中。简而言之,数组大小会随着解析更多数据而扩大。

有什么办法吗?我的意思是创建一个动态可扩展数组?或者如果有其他方法可以这样做,那么请帮助我解决这个问题。

【问题讨论】:

  • @Marcin Gil 但我完全想要作为单独的数组,因为想要在“ListAdapter”中显示数组数据
  • 为什么不使用可以将 List 作为参数的 ArrayAdapter 呢?如果你打算使用 ListView 那没问题。
  • @Marcin Gil 但我已经使用“BaseAdapter”实现了,因为我正在将列表视图自定义为带有 2 个文本视图的图像

标签: android arrays dynamic-arrays xml-parsing


【解决方案1】:

您可以使用Vector&lt;String&gt;,然后(如果您需要一个数组)使用toArray 方法将数据复制到数组中。

    Vector<String> v = new Vector<String>();
    for (int i=0; i<10; i++)
        v.add(new String(Integer.toString(i)));

    Object s[] = v.toArray();

    for(int i=0; i<10; i++)
        str = s[i].toString();

另一种选择:

    String a[] = {};
    v.toArray(a);

【讨论】:

  • @Asahithanx 很多...现在让我以我的问题方式尝试一下
  • 但是你可能应该使用 ArrayList 而不是 Vector,因为 Vector 是同步的。
  • @Asahi 非常感谢...你救了我的命,我终于实现了 Vector,然后将其转换为数组
  • 但是......如果有更好和合适的解决方案也欢迎
  • ArrayList 也是一个选项 - 取决于您对同步的要求
【解决方案2】:

你像这样使用和 List 数组

List<String> name=new ArrayList<String>();
List<String> address=new ArrayList<String>(); 
name.add(StudyParser.getValue(eimg, "name"));  
address.add(StudyParser.getValue(eimg,"address")

在哪里 StudyParser.getValue();是你调用来获取数据的方法

【讨论】:

    【解决方案3】:

    创建无限大小数组的最简单方法是使用 String Builder。 这允许您在运行时添加许多元素。 它有 3 个主要组件。

    1. 声明和初始化。
    2. 增值/附加
    3. 打印/使用

    在 Android Studio 的任何地方使用下面的代码。

    //Basic Decleration
            StringBuilder myString = new StringBuilder();
            
    //Adding data
           myString.append("Hello text <br>");
            myString.append("some more data <br>");
            myString.append("more data to store <br>");
            
    //Displaying in already created text view
            deviceDetails.setText(Html.fromHtml(callLogs+""));
           

    注意:我将其视为 HTML 字符串,“
    ”标签将在文本视图中创建下一行。因此,所有添加的数据都将显示在新行中。

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2012-04-05
      • 2019-02-06
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2012-11-15
      相关资源
      最近更新 更多