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