【问题标题】:How to pass ArrayList using putStringArrayListExtra()如何使用 putStringArrayListExtra() 传递 ArrayList
【发布时间】:2010-10-27 05:04:50
【问题描述】:

您好,我想将 Arraylist 从一个 activity 传递给另一个。我使用putStringArrayListExtra(),但显示错误:"The method putStringArrayListExtra(String,ArrayList is undefined for the type bundle." 是否有任何其他方法可用于传递ArrayList

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

【问题讨论】:

    标签: java android arraylist


    【解决方案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");   
    

    【讨论】:

      【解决方案2】:

      尝试下面的一个将一维数组传递给 Arraylist in extras

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

      【讨论】:

      • 谢谢你 maneesh.. 你能告诉我如何使用序列化或使用 ArrayList 本身将多维数组传递给另一个活动......
      • 您可以将 2-d Array 转换为 1-D ArrayList/1-D Array 并通过 extras 发送,并在其他活动中重新转换为 2-d 数组。贴出解决方案。请检查相同。
      【解决方案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++);
                  }
              }
      

      【讨论】:

        【解决方案4】:

        您必须定义 String 类型的 ArrayList。您不能在 putStringArrayListExtra 中传递 Generic ArrayList。 下面是正确的代码。

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

        现在像这样在其他活动中访问这个 ArrayList。

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

        【讨论】:

        • maneesh,我使用了你给我的解决方案。但问题仍然存在。那就是我必须将一个一维数组传递给这个 ArrayList。请告诉我如何将这个一维数组传递给列表或将二维数组传递给另一个活动..
        • 尝试将一维数组传递给 ArrayList in extras ArrayList al = new ArrayList();String arr[] = {"Zero", "One", "二”}; //将字符串数组转换为集合 Collection l = Arrays.asList(arr);al.addAll(l); i.putStringArrayListExtra("ar", al);
        猜你喜欢
        • 1970-01-01
        • 2018-05-24
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        相关资源
        最近更新 更多