[英]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.