2011-11-07 119 views
3

//編輯:我改變了我的ArrayList轉換,但我無法加載第二個微調框如何將數組的ArrayList轉換爲數組數組

我在做什麼錯。我想用一個w數組填充第二個微調控件,具體取決於第一個微調控件中選擇的行,但是在嘗試從數組列表中轉換時出現此警告。

***我已經這標誌着在代碼 空指針異常 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()]); 
     } 
+0

一旦問題得到解答,請不要將其更改爲有關您遇到的下一個問題的問題。發佈一個新問題。 –

回答

0

讓他們在相同的數據類型的「ArrayList中」和「的字符串數組」它們是相同的數據類型沒有,所以他們不會compartable彼此。並請評論問題所在。

+0

整點是兩者之間的轉換。 –

+0

像我有傷心嘗試確保您將它們轉換爲相同的數據類型。例如,w [a] = Convert.ToString(allProducts [a]) – Givelasdougmore

+0

正確,那就是問題 - 回答「我如何將這些轉換成」與「你需要轉換它們」沒有那麼有用,那就是我只是在說。 –

4

爲什麼不

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

這是正確的答案謝謝 –

1

我認爲你可以得到的只是這樣的:

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

它看起來像你改變主意,你是怎樣通過做轉換一半。您的代碼是有點這樣的:

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()][]); 

要麼將​​工作,儘管後者是更短的,可能更有效。

+0

'(String [] [])'鑄造是多餘的。你不需要那個。 – tom

+0

@tom你是對的。我已經更新了答案。謝謝! –