将包含其他自定义对象的对象列表从一个活动发送到另一个活动

Posted

技术标签:

【中文标题】将包含其他自定义对象的对象列表从一个活动发送到另一个活动【英文标题】:Send list of objects which contain other custom objects from one activity to another 【发布时间】:2014-12-05 08:15:37 【问题描述】:

这是我的班级,我想将其列表发送到另一个活动。

public class PostComments 

    public User from;

    public String message;

    public String createdTime;

    public String like_count;

    public Boolean user_likes;

这是 User 类,其对象用于 PostComments 类。

public class User extends BaseEntity
    public String photoUrl;

这是 BaseEntity 类

public class BaseEntity 
    public String Id;

    public String Name;

如何将此对象从一个活动发送到另一个活动?

PostComments[] myData = ClickedPost.comments.data;
Intent PostCommentsActivity = new Intent(getActivity() , PostCommentsActivity.class);
getActivity().startActivity(PostCommentsActivity);

以上是打开 PostCommentsActivity 的代码,我想将 myData 对象发送到 PostCommentsActivity。

我已经对这个问题进行了很多搜索,但每个问题和教程都解释说,仅针对包含简单字符串、int 或布尔变量的类。

【问题讨论】:

为什么要发送这么多数据?为什么不直接发送一个对象的 ID,然后在目的地检索/构造该对象? 其他方法都失败了,您可以随时序列化对象并在目的地反序列化。 我只想以任何方式在第二个活动中显示我的这个 cmets 数组。你能提供一些我该怎么做的链接吗? 【参考方案1】:

让我们试试吧:

ArrayList<PostComments> comments = new ArrayList<MainActivity.PostComments>();
comments.add(...) //Add your list data here
Intent intent = new Intent(getActivity() , PostCommentsActivity.class);
intent.putExtra("list_comments", comments);
getActivity().startActivity(intent);

并将您的 PostComments 类编辑为:

public class PostComments implements Serializable 

        public String message;

        public String createdTime;

        public String like_count;

        public Boolean user_likes;
    

在 PostCommentsActivity 中,获取 bundle 以获取列表 cmets。

【讨论】:

PostComments[] myData = ClickedPost.cmets.data; 我没有arraylist,它是一个来自服务器的简单数组。如何将其更改为 ArrayList 这可能行不通。 OP 的所有类都必须是可序列化的才能正常工作 @Yawar 如果非要问这个问题,那我建议你先学java @TruongPhuQuoc 当您发送对象列表或数组时,它们中的每一个都必须是可序列化的 - 我知道这一点,但您需要将其包含在您的答案中。

以上是关于将包含其他自定义对象的对象列表从一个活动发送到另一个活动的主要内容,如果未能解决你的问题,请参考以下文章

单击另一个活动时如何发送自定义arraylist的列表项的数据?

Android:如何将界面从一个活动发送到另一个活动

通过 Intent 传递自定义对象列表

使用 Dozer 的自定义转换器将对象列表映射到另一个列表

如何将字符串从一个活动发送到另一个活动

如何在 Android Java 中将 1000 多个项目列表从一个 Activity 发送到另一个?