2010-10-27 8 views
8

Witam Chcę przekazać Arraylist z jednego activity do innego. Używam putStringArrayListExtra(), ale pojawia się błąd: "The method putStringArrayListExtra(String,ArrayList is undefined for the type bundle." Czy jest dostępna inna metoda przekazywania ArrayList?Jak przekazać ArrayList za pomocą 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); 

Odpowiedz

8

try poniżej jednego przekazać 1-D tablicę ArrayList w statystów

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

Dziękuję maneesh .. Czy możesz mi powiedzieć, jak przekazać tablicę wielowymiarową do innej aktywności przy użyciu serializacji lub przy użyciu samego ArrayList ... – Miya

+0

Możesz przekonwertować 2-d Array na 1-D ArrayList/1-D Array i wysłać przez dodatki i inne działania przekształcają się w tablicę 2-d. Wysłałem rozwiązanie. Sprawdź to samo. – Maneesh

1

Musisz zdefiniować ArrayList typu String. nie można przekazać Generic ArrayList w putStringArrayListExtra. Poniżej znajduje się poprawny kod.

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

teraz dostęp do tej ArrayList w innej działalności jak ten.

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

Maneesh, użyłem rozwiązanie, które mi dałaś. Ale problem nadal istnieje. To znaczy, że muszę przekazać tablicę 1-wymiarową do tej tablicy ArrayList. Proszę, powiedz mi, jak przekazać tę tablicę jednowymiarową do listy lub przekazać tablicę 2-wymiarową do innej aktywności. – Miya

+0

spróbuj poniżej jednej, aby przekazać tablicę 1-D do Arraylist w dodatkach ArrayList al = nowa ArrayList (); String arr [] = {"Zero", "One", "Two"}; // Konwertuj tablicę ciągów do kolekcji Kolekcja l = Arrays.asList (arr); al.addAll (l); i.putStringArrayListExtra ("ar", al); – Maneesh

3

Pierwszy aktywny:

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); 

Drugi aktywny:

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

Spróbuj It pracował dla mnie

1-te aktywny

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); 

2-te aktywny

ArrayList<String> ar1=getIntent().getExtras().getStringArrayList("list"); 
Powiązane problemy