如何将 ArrayList<Custom Object> 从一个活动传递到另一个活动? [复制]

Posted

技术标签:

【中文标题】如何将 ArrayList<Custom Object> 从一个活动传递到另一个活动? [复制]【英文标题】:How to pass ArrayList<CustomeObject> from one activity to another? [duplicate] 【发布时间】:2014-02-10 14:05:37 【问题描述】:

我想将 Follow ArrayList 从一个活动发送到另一个活动,请帮助。

ContactBean m_objUserDetails = new ContactBean();
ArrayList<ContactBean> ContactLis = new ArrayList<ContactBean>(); 

我在上面的arraylist中添加数据后发送如下

  Intent i = new Intent(this,DisplayContact.class);
  i.putExtra("Contact_list", ContactLis);
  startActivity(i);

但是我在恢复它时遇到了问题。

ArrayList<ContactBean> l1 = new ArrayList<ContactBean>();
Bundle wrapedReceivedList = getIntent().getExtras();
l1= wrapedReceivedList.getCharSequenceArrayList("Contact_list");

此时我收到此错误:

Type mismatch: cannot convert from ArrayList<CharSequence> to ArrayList<ContactBean>

我的 ContactBean 类实现了 Serializable 请同时说明为什么我们必须实现可序列化接口。

【问题讨论】:

***.com/questions/15790499/… 使您的自定义对象 Parcelable。 有史以来最蹩脚的评论 【参考方案1】:

如果E 类型是Serializable,您可以以同样的方式传递ArrayList&lt;E&gt;

您可以调用IntentputExtra (String name, Serializable value) 进行存储,调用getSerializableExtra (String name) 进行检索。

示例:

ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);

在其他活动中:

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");

【讨论】:

不要使用Serializable,而是使用Parcelable! This is why. 取决于你如何实现你的代码 那些“依赖”是什么?我们可以知道先生...? @PankajKumar ParcelableSerializable 都是可以使用 implements 关键字实现的接口。取决于你在课堂上使用哪个 @Cbas 我实现了 Parcelable 。尽管mMap 有数据,但当我尝试获取额外时它返回null。当我使用Serializable 时,它起作用了,我试图找出原因【参考方案2】:

在第一个活动中:

ArrayList<ContactBean> fileList = new ArrayList<ContactBean>();
Intent intent = new Intent(MainActivity.this, secondActivity.class);
intent.putExtra("FILES_TO_SEND", fileList);
startActivity(intent);

在接收器活动中:

ArrayList<ContactBean> filelist =  (ArrayList<ContactBean>)getIntent().getSerializableExtra("FILES_TO_SEND");`

【讨论】:

它似乎不起作用,我的应用程序一直在崩溃【参考方案3】:

你需要在ContactBean 类中实现 Parcelable,我为你举了一个例子:

public class ContactClass implements Parcelable 

private String id;
private String photo;
private String firstname;
private String lastname;

public ContactClass()




private ContactClass(Parcel in) 
    firstname = in.readString();
    lastname = in.readString();
    photo = in.readString();
    id = in.readString();



@Override
public int describeContents() 
    // TODO Auto-generated method stub
    return 0;


@Override
public void writeToParcel(Parcel dest, int flags) 

    dest.writeString(firstname);
    dest.writeString(lastname);
    dest.writeString(photo);
    dest.writeString(id);



 public static final Parcelable.Creator<ContactClass> CREATOR = new Parcelable.Creator<ContactClass>() 
        public ContactClass createFromParcel(Parcel in) 
            return new ContactClass(in);
        

        public ContactClass[] newArray(int size) 
            return new ContactClass[size];

        
    ;

   // all get , set method 
 

然后为您的代码获取和设置:

Intent intent = new Intent(this,DisplayContact.class);
intent.putExtra("Contact_list", ContactLis);
startActivity(intent);

二等:

ArrayList<ContactClass> myList = getIntent().getParcelableExtra("Contact_list");

【讨论】:

我确定您的意思是:ArrayList&lt;ContactClass&gt; myList 而不是 ArrayList&lt;String&gt; myList 是的,你说得对@gunar 谢谢你的帮助 我从未使用过 Parcelable。但据我所知 Parcelable 比可序列化快 10 倍,期待使用 Parcelable。我的 ContactBean 类中有 getter setter 方法,我只是在创建对象后将数据存储在类变量中,然后将该对象添加到 ArrayList。如果类是可包裹的,这可能吗? 对不起,我不明白你的意思,但如果我想简单地告诉你,你需要上述方法以及 getter 和 setter 方法。我编辑我的类 好的,谢谢。一定会尝试的。【参考方案4】:

使用此代码将arraylist&lt;customobj&gt; 传递给另一个Activity

首先序列化我们的联系bean

public class ContactBean implements Serializable 
      //do intialization here

现在传递你的数组列表

 Intent intent = new Intent(this,name of activity.class);
 contactBean=(ConactBean)_arraylist.get(position);
 intent.putExtra("contactBeanObj",conactBean);
 _activity.startActivity(intent);

【讨论】:

如何在 textView 中设置值?? 哪个值???? aaraylist 在下一个活动中 你想将整个数组列表数据设置为 textview 吗? 没有某些字段..

以上是关于如何将 ArrayList<Custom Object> 从一个活动传递到另一个活动? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

java 对数组列表进行排序。使用比较器。链接:https://stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects

如何将Node树的数据转换为有序的ArrayList?

如何将 MySQL 查询结果放入 ArrayList<object>

java如何将一个arraylist等量划分为5个新的arraylist集合?

如何将 arraylist<string> 转换为 string[] [重复]

如何将 HashMap<String, ArrayList<String>> 存储在列表中?