从一个活动传递一个列表到另一个从一个活动传递一个列表到另一个(Passing a List from

2019-06-14 14:44发布

如何通过集合像ArrayList ,等从一个Activity到另一个我们用来传递Stringsint意图的putExtra方法的帮助?

任何人都可以请帮助我,因为我想通过一个List<String>从一个Activity到另一个?

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:

首先,你需要创建一个Parcelable对象类,看到的例子

public class Student implements Parcelable {

        int id;
        String name;

        public Student(int id, String name) {
            this.id = id;
            this.name = name;

        }

        public int getId() {
            return id;
        }

        public String getName() {
            return name;
        }


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

        @Override
        public void writeToParcel(Parcel dest, int arg1) {
            // TODO Auto-generated method stub
            dest.writeInt(id);
            dest.writeString(name);
        }

        public Student(Parcel in) {
            id = in.readInt();
            name = in.readString();
        }

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

            public Student[] newArray(int size) {
                return new Student[size];
            }
        };
    }

而名单

ArrayList<Student> arraylist = new ArrayList<Student>();

从调用活动代码

Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("mylist", arraylist);
intent.putExtras(bundle);       
this.startActivity(intent);

名为活动代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);   

    Bundle bundle = getIntent().getExtras();
    ArrayList<Student> arraylist = bundle.getParcelableArrayList("mylist");
}


Answer 3:

使用putExtra价值传递给意图。 使用getSerializableExtra方法来检索这样的数据

活动一:

ArrayList<String> list = new ArrayList<String>();

intent.putExtra("arraylist", list);
startActivity(intent);

活动B:

ArrayList<String> list = getIntent().getSerializableExtra("arraylist");


Answer 4:

我尝试了所有提出的技术,但他们没有工作,从工作停止我的应用程序,然后我终于succedded。 这里是我做到了......在我这样做主要活动:

            List<String> myList...;
            Intent intent = new Intent...;
            Bundle b=new Bundle();
            b.putStringArrayList("KEY",(ArrayList<String>)myList);            
            intent_deviceList.putExtras(b);
            ....startActivity(intent);

要获得新的活动的数据:

    List<String> myList...
    Bundle b = getIntent().getExtras();
    if (b != null) {
        myList = bundle.getStringArrayList("KEY");
    }

我希望这会帮助别人...



Answer 5:

要通过从一个活动到另一个活动ArrayList中,应该包括

intent.putStringArrayListExtra(KEY, list); //where list is ArrayList which you want to pass

开机前activity.And获得ArrayList的另一活动包括:

Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            temp = bundle.getStringArrayList(KEY); // declare temp as ArrayList
                }

你将能够通过this.Hope通过ArrayList中,这将有助于你。



文章来源: Passing a List from one Activity to another