如何通过的ArrayList 从一个活动到另一个? [重复] 如何通过的ArrayList

2019-05-08 23:37发布

这个问题已经在这里有一个答案:

  • 活动之间传递对象的ArrayList 5个回答

我想从一个活动发送下面的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也请告诉我们为什么要实现Serializable接口。

Answer 1:

可以传递ArrayList<E>以相同的方式,如果E类型是Serializable

你会调用putExtra (String name, Serializable value)Intent来存储和getSerializableExtra (String name)进行检索。

例:

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

在其他活动:

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


Answer 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");`


Answer 3:

你需要在你实现Parcelable ContactBean类,我把一个例子给你:

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");


Answer 4:

使用此代码传递arraylist<customobj>到anthother 活动

首先我们序列化豆接触

public class ContactBean implements Serializable {
      //do intialization here
}

现在,通过你的ArrayList

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


文章来源: How to pass ArrayList from one activity to another? [duplicate]