繁体   English   中英

如何从数组的ArrayList转换为数组数组

[英]How to convert from an ArrayList of arrays to an array of arrays

//编辑:我改变了我的ArrayList转换,但我无法加载第二个微调器

我究竟做错了什么。 我想根据第一个微调器中选择的行填充第二个带有w数组的微调器,但是在尝试从数组列表转换时会收到此警告。

***我在代码中标记了Null指针异常11-06 19:03:34.050:WARN / System.err(5342):在RetrievingAmazonXMLDataActivity.onCreate(RetrievingAmazonXMLDataActivity.java:88)

//编辑过的代码

for (int i = 0; i < tokens.length; i++) {
            String a = dumpTitles("ProductName", i);
            element = a.split("!");
            allProducts.add(element);
        }

       w =  (String[][])allProducts.toArray(new String[allProducts.size()][]);


Spinner spinnerProducts = (Spinner) findViewById(R.id.spinner2);
        spinnerProducts.setOnItemSelectedListener(this);

// * *下面的错误行

 ArrayAdapter<String> productsArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, productArrayToShow);

       productsArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerProducts.setAdapter(productsArrayAdapter);

 public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
    {

        try {
            selected = parent.getItemAtPosition(position).toString();


            productArrayToShow = w[position];

        } catch (Exception e) {}
    }

//原始代码

ArrayList<String[]>allProducts = new ArrayList<String[]>();
    for (int i = 0; i < tokens.length; i++) {
        String a = dumpTitles("ProductName", i);
        element = a.split("!");
        allProducts.add(element);
    }


    String[][] w; = new String[allProducts.size()][];
        for (int a = 0; a<allProducts.size(); a++) {
            w[a] = (String[])allProducts.toArray(new String[allProducts.size()]);
        }

为什么不呢

String[][] w = allProducts.toArray(new String[][] {});

看起来你改变了主意,关于如何在中途完成转换。 你的代码有点像这样:

String[][] w = new String[allProducts.size()][];
for (int a = 0; a<allProducts.size(); a++) {
  w[a] = allProducts.get(a);
}

还有一点:

String[][] w = allProducts.toArray(new String[allProducts.size()][]);

两者都可以工作,虽然后者更短,可能更有效率。

我想你可以通过这样做:

String[][] w = allProducts.toArray(new String[allProducts.size()]);

使它们具有相同的数据类型“ArrayList”和“Array of Strings”,它们的数据类型不同,因此它们不会相互隔离。 请评论问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM