如何将ArrayList <data class =“”>从一个活动传递到另一个活动android </data>

时间:2014-12-10 13:58:35

标签: android

在我的应用程序中,每当我们单击“SEARCH”按钮时,它会进行Http调用并获取json作为响应。我解析了json并将数据保存在arraylist bdata中。 ArrayList bdata = new ArrayList();   BusData包含getter和setter。我还使用了一个适配器类来自定义listview。 现在我想将适配器设置为listview但是listview是在另一个类中(不在搜索按钮所在的类中),所以如何将我的arraylist从一个活动发送到另一个活动,借助于Intent将适配器设置为listview

谢谢。

3 个答案:

答案 0 :(得分:1)

执行此操作的方法是将您的arraylist序列化为JSON。 使用GSON库

  compile 'com.google.code.gson:gson:2.3.1'

在build.gradle文件中添加以上行。

创建一个类来帮助您序列化对象

public class SerializationHelper {
private static Gson gson = new Gson();

public static String serialize(Object object) {
    return gson.toJson(object);
}

public static Object deserialize(String json, Class classType) {
    return gson.fromJson(json, classType);
}

}

现在,当您想要启动新活动时,请添加序列化字符串。

String json=SerializationHelper.serialize(myArrayList);
intent.putExtra("data",json);

在你创建的新活动中,获取它并再次创建你的对象。

String json=intent.getStringExtra("data");
Object deserializedObject=SerializationHelper.deserialize(json,ArrayList.class);

现在投射你的物体!

ArrayList<MyClass> myCoolArray=(ArrayList<MyClass>)deserializedObject.

其他更简单的方法是让你的arraylist静态和公开,并将其存储在其他类中。

   public class GlobalStuff{
public static ArrayList<MyClass> myAwesomeList;
}

现在通过GlobalStuff.myAwesomeList访问您的列表。

答案 1 :(得分:0)

您需要创建自定义类(ArrayList&lt; 数据类&gt;)到 Parcelable ,然后您可以将其传递给其他活动。

http://androidideasblog.blogspot.in/2010/02/passing-list-of-objects-between.html

答案 2 :(得分:0)

通过活动传递数据时你应该使用Parcelable,stackoverflow中有很多例子,这个很好:

https://stackoverflow.com/a/22446641/2091315

接下来,您需要在&#34;发件人&#34;上配置意图。活性:

Intent intent = new Intent(getApplicationContext(),
                            ReceiverActivity.class);

intent.putExtra("arrayListIdentifier",parcelableArrayClass);

startActivity(intent);

在&#34;接收器&#34;活性:

parcelableArrayClass myParcelableObject = (parcelableArrayClass) getIntent().getParcelableExtra("arrayListIdentifier");