Ted*_*opp 23
您可以使对象实现Parcelable并使用putParcelableArrayListExtra.或者,您可以以某种方式序列化对象并放置序列化对象的字节数组.
wan*_*nik 20
这是一个例子.MainActivity将人员列表发送到OtherActivityvia Intent.
class Person implements Serializable {
int id;
String name;
Person(int i, String s) {
id = i;
name = s;
}
}
public class TestAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<Person> list = new ArrayList<Person>();
list.add(new Person(1, "Tom"));
list.add(new Person(5, "John"));
Intent intent = new Intent(this, OtherActitity.class);
intent.putExtra("list", list);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
OtherActivity.java
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class OtherActitity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
Intent i = getIntent();
ArrayList<Person> list = (ArrayList<Person>) i
.getSerializableExtra("list");
Toast.makeText(this, list.get(1).name, Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
还有一种方法 - 你可以将对象列表序列化为某种字符串表示形式(让它成为JSON),然后将字符串值检索回列表
// here we use GSON to serialize mMyObjectList and pass it throught intent to second Activity
String listSerializedToJson = new Gson().toJson(mMyObjectList);
intent.putExtra("LIST_OF_OBJECTS", listSerializedToJson);
startActivity(intent);
// in second Activity we get intent and retrieve the string value (listSerializedToJson) back to list
String listSerializedToJson = getIntent().getExtras().getString("LIST_OF_OBJECTS");
mMyObjectList = new Gson().fromJson(objectsInJson, MyObject[].class); // in this example we have array but you can easy convert it to list - new ArrayList<MyObject>(Arrays.asList(mMyObjectList));
Run Code Online (Sandbox Code Playgroud)
小智 7
一个更好的主意是为要放入其Intent的数组列表的对象实现Parcelable接口。例如:
public class Person implements Parcelable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int describeContents() {
return this.hashCode();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以说应用程序代码:
bundle.putParcelableArrayList("personList", personList);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26646 次 |
| 最近记录: |