2010-10-27 21 views
8

傳遞ArrayList嗨我想將Arraylist從一個activity傳遞到另一個。我使用putStringArrayListExtra(),但顯示錯誤:"The method putStringArrayListExtra(String,ArrayList is undefined for the type bundle."有沒有其他方法可用於傳遞ArrayList如何使用putStringArrayListExtra()

String test[]=new String[3]; 
    ArrayList<String[]> al=new ArrayList<String[]>(); 
    int x,y; 
    test[0]="1"; 
    test[1]="2"; 
    test[2]="3"; 
    al.add(test); 

      test = new String[3]; 
      test[0]="4"; 
      test[1]="5"; 
      test[2]="6"; 
      al.add(test); 

      Bundle list_bundle=new Bundle(); 
      list_bundle.putStringArrayListExtra("lists",al); 
      Intent list_intent= new Intent(v.getContext(), view_all_selected.class); 
      list_intent.putExtras(list_bundle); 
      startActivityForResult(list_intent, 2); 

回答

8

嘗試下面的一個來傳遞1-d陣列中臨時演員到的ArrayList

ArrayList<String> al = new ArrayList<String>(); 
String arr[] = {"Zero", "One", "Two"}; 
//Convert string array to a collection 
Collection l = Arrays.asList(arr); 
al.addAll(l); 
i.putStringArrayListExtra("ar", al); 
+0

謝謝maneesh ..你能告訴我如何使用序列化或使用ArrayList本身將多維數組傳遞給另一個活動... – Miya 2010-10-27 09:05:19

+0

您可以將2-D數組轉換爲1-D ArrayList/1-D數組並通過發送臨時演員和其他活動重新轉換成二維陣列。發佈解決方案。請檢查一致。 – Maneesh 2010-10-27 10:12:49

1

您必須定義String類型的ArrayList。您無法在putStringArrayListExtra中傳遞通用ArrayList。 以下是正確的代碼。

----- 
ArrayList<String> al = new ArrayList<String>(); 
------ 
------- 
list_bundle.putStringArrayListExtra("lists",al); 
------ 

現在,在這樣的其他活動訪問此ArrayList。

ArrayList<String> cl= new ArrayList<String>(); 
cl =getIntent().getExtras().getStringArrayList("lists"); 
+0

maneesh,我用你給我的解決方案。但問題仍然存在。那就是我必須將1維數組傳遞給此ArrayList。請告訴我如何通過這個一維數組來列出或傳遞一個二維數組到另一個活動.. – Miya 2010-10-27 05:54:37

+0

嘗試下面的一個將1-D數組傳遞給Arraylist的額外ArrayList al = new ArrayList (); String arr [] = {「Zero」,「One」,「Two」}; //將字符串數組轉換爲集合 Collection l = Arrays.asList(arr); al.addAll(l); i.putStringArrayListExtra(「ar」,al); – Maneesh 2010-10-27 06:36:20

3

第一活動:

ArrayList<String> al = new ArrayList<String>(); 
    int ROWS = 2; 
         int COLS = 1; 
         String[][] a2 = new String[ROWS][COLS]; 
         a2[0][0]="one"; 
         a2[1][0]="two"; 
         for(int i=0;i<ROWS;i++) 
         { 
          for(int j=0;j<COLS;j++) 
          { 
           al.add(a2[i][j]); 
          } 
         } 
    i.putStringArrayListExtra("ar", al); 
         i.putExtra("ROWS", ROWS); 
         i.putExtra("COLS", COLS); 

第二活動:

ArrayList<String> test = new ArrayList<String>(); 
test=getIntent().getExtras().getStringArrayList("ar"); 
     int ROWS=getIntent().getExtras().getInt("ROWS"); 
     int COLS=getIntent().getExtras().getInt("COLS"); 
     String[][] a2 = new String[ROWS][COLS]; 
     int index=0; 
     for(int i=0;i<ROWS;i++) 
     { 
      for(int j=0;j<COLS;j++) 
      { 
       a2[i][j]=test.get(index++); 
      } 
     } 
9

嘗試此它爲我工作

1日活動

ArrayList<String> ar=new ArrayList<String>(); 
ar.add("Apple"); 
ar.add("Banana"); 

Intent i=new Intent(this,Route.class); 
i.putStringArrayListExtra("list", ar); 
startActivity(i); 

第二活動

ArrayList<String> ar1=getIntent().getExtras().getStringArrayList("list");