如何将 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<E>
。
您可以调用Intent
的putExtra (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 Parcelable
和 Serializable
都是可以使用 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<ContactClass> myList
而不是 ArrayList<String> myList
是的,你说得对@gunar 谢谢你的帮助
我从未使用过 Parcelable。但据我所知 Parcelable 比可序列化快 10 倍,期待使用 Parcelable。我的 ContactBean 类中有 getter setter 方法,我只是在创建对象后将数据存储在类变量中,然后将该对象添加到 ArrayList使用此代码将arraylist<customobj>
传递给另一个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
如何将 MySQL 查询结果放入 ArrayList<object>
java如何将一个arraylist等量划分为5个新的arraylist集合?