【问题标题】:how to pass the ArrayList<data class> from one activity to another activity android如何将 ArrayList<data class> 从一个活动传递到另一个活动 android
【发布时间】:2015-02-08 18:11:56
【问题描述】:

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

谢谢。

【问题讨论】:

标签: android


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    接下来,您需要在“发送者”Activity 上配置 Intent:

    Intent intent = new Intent(getApplicationContext(),
                                ReceiverActivity.class);
    
    intent.putExtra("arrayListIdentifier",parcelableArrayClass);
    
    startActivity(intent);
    

    关于“接收者”Activity:

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

    【讨论】:

    • k.如何在意图的帮助下将数组列表(可打包)从一个活动发送到另一个活动
    • putExtra() 和 getParcelableExtra() 应该可以解决问题,添加到答案中
    • 这里 parcelableAraayclass 表示 ArrayList 或 bdata(ArrayList bdata)?????????????
    • bdata 包含我所有的 json 解析数据
    • 如何在适配器的帮助下将此数据设置到接收器活动中的列表视图?
    【解决方案3】:

    一种方法是将您的数组列表序列化为 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.
    

    其他更简单的方法是将你的数组列表设为静态和公开,并将其存储在其他类中。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多