簡體   English   中英

設置多維ArrayList並傳遞給另一個Activity

[英]Setting multidimensional ArrayList and passing to another Activity

我已經嘗試將多維ArrayList發送到另一個Activity已有一段時間了,我在這里發現了關於StackOverflow的許多答復,這些答復似乎相關,但不幸的是我無法應用其中的任何答復。

我認為設置數組的方式可能有問題。

ArrayList<java.io.Serializable> prodlist = new ArrayList<java.io.Serializable>();

for (int i = 0; i < jsonMainArr.length(); i++) {

    JSONObject childJSONObject = jsonMainArr.getJSONObject(i);
    String name      = childJSONObject.getString("Product");
    String reference = childJSONObject.getString("reference");
    String link      = childJSONObject.getString("img");
    String qty       = childJSONObject.getString("quantity");
    String prodbcode = childJSONObject.getString("bcode");

    ArrayList<java.io.Serializable> prod = new ArrayList<java.io.Serializable>();
    prod.add( prodbcode ); //0 barcode
    prod.add( name );      //1 name
    prod.add( reference ); //2 ref
    prod.add( link );      //3 img
    prod.add( qty );       //4 qty    

    prodlist.add(prod);

}

我不確定此prodlist.add(prod)是否是創建此多維數組的正確方法。

比傳遞我正在使用的數組:

 Intent i = new Intent(getApplicationContext(), PrepareProduct.class);
 i.putExtra("products", prodlist);
 startActivity(i);

並在另一側接收:

Bundle extras = getIntent().getExtras();
ArrayList productsNameList = extras.getParcelableArrayList("products");

但是我得到的是一維數組而不是二維數組。

我是一名試圖學習Java的PHP開發人員,而這些數組使我很頭疼。 謝謝。 我知道我真正需要的東西可能已經在StackOverflow上了,但是我確實找不到可以申請的方式。

創建多維ArrayList的正確方法是

ArrayList<ArrayList<String>> prodlist = new ArrayList<ArrayList<String>>();
ArrayList<String> prod = new ArrayList<String>();
prod.add( prodbcode ); //0 barcode
prod.add( name );      //1 name
prod.add( reference ); //2 ref
prod.add( link );      //3 img
prod.add( qty );       //4 qty    

prodlist.add(prod);

您的代碼為您提供一維ArrayList的原因是因為產品列表ArrayList的類型為Serializable,而ArrayList本身實現了Serializable,因此可以進行編譯,但是由於prodlist僅為一維,這就是您所得到的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM