将对象的Arraylist从一个活动发送到另一个活动

时间:2014-10-30 23:26:58

标签: java android arraylist

我需要从一个活动复制另一个活动中的 ArrayList 。 这是一个名为 Dias 的对象的 ArrayList ,它包含一个String和一个布尔值:

Arraylist {Dias}  // Dias contains(String Dias, boolean estado)

我必须将此ArrayList传递给其他活动。

My Dias课程:

public class Dias {

  private String Dia;
  private boolean estado;

//CONSTRUCTOR DE LA CLASE//
  public Dias(String Dia, boolean estado) {
      this.Dia = Dia;
      this.estado = estado;
  }

//GETTERS Y SETTERS DE LA CLASE//

  public String getDia() {
      return Dia;
  }

  public void setDia(String dia) {
      Dia = dia;
  }

  public boolean isChekeado() {
      return estado;
  }

  public void setChekeado(boolean chekeado) {
      estado = chekeado;
  }

}

我的小学班:

 public class Primera extends Activity {
    ArrayList<Dias> dias = new ArrayList<Dias>();
     //OnClick Method
    public void lanzar2(View view){
      dias.add(new Dias("Lu", false));
      dias.add(new Dias("MAr", false));
      Intent i = new Intent();
      Bundle b = new Bundle();
      b.putParcelableArrayList("arreglo", (ArrayList<? extends Parcelable>) dias);
      i.putExtras(b);
      i.setClass(this, ListasActivity.class);
      startActivity(i);
   }

}

如何将 Arraylist 发送到其他活动?我只是不明白它是如何工作的(可以分发的)我也不知道使用它的语法

谢谢!

3 个答案:

答案 0 :(得分:0)

您必须在对象Dias中实现Parcelable接口。您可以在此处详细了解如何执行此操作:http://developer.android.com/reference/android/os/Parcelable.html

除此之外,您将使用以下方法发送您用于启动ArrayList的其他活动的Intent:

)&#34;&gt; intent.putParcelableArrayListExtra(nameToSaveAs,yourList)

然后您startActivity(intent)并且您可以使用getIntent().getParcelableArrayListExtra(nameToSaveAs);接收其他活动中的数据您可能需要投射它,但这是传递ArrayLists的基本步骤。

答案 1 :(得分:0)

另一种简单的方法是以自己的方式序列化它。

例如

如果你的arraylist中有5个元素,例如"hello", "how" , "are", "you", "brother"。您可以遍历arraylist并将字符串设为hello,how,are,you,brother

String serializedString = "";
for(String anElement:arrayList)
    serilaizedString = serializedString + "," +anElement;

并使用Intent的 putExtra 方法将其发送到另一个活动。

在接收端,您可以使用拆分(&#34;,&#34;)拆分文本,然后您将获得一个数组,如果需要,您可以再次更改为数组列表

String[] myArray = recievedString.split(",");
List<String> myList = new List<String>();
for(String anElement:myList)
    myList.add(anElement);

现在你有myList作为数组列表。

P.S。但您的字符串不应包含任何逗号。因此,对于使用逗号的情况,您可以使用类似$%的内容或者适用于案例的内容。

答案 2 :(得分:-1)

您可以使用序列化或使用Parcelable接口传递它。有关Parcelable接口http://developer.android.com/reference/android/os/Parcelable.html的信息,请参阅此内容。