Hun*_*unt 2 android design-patterns
在我的应用程序中,我从JavaScript获取数据,因为无法将数据作为数组或对象返回,我将其作为String返回.
现在要组织数据我正在创建一个包含ArrayList
s和其他字符串变量的类,而且我正在创建我的类对象变量数组来存储多个记录.
public class Data {
ArrayList<String> m_empArrayList = new ArrayList();
ArrayList<String> m_depArrayList = new ArrayList();
String m_time;
String m_duration;
}
Data d = new Data();
Run Code Online (Sandbox Code Playgroud)
在活动之间传递数据的好方法是什么?由于Intent
s和ShredPrefrence
s用于传递小的数据单元,我在这里不考虑它.
Parcelable
在自定义对象中实现接口并通过Intent
.
这是一个Parcelable
对象的例子.
public class MyObject implements Parcelable {
private String someString = null;
private int someInteger = 0;
public MyObject() {
// perform initialization if necessary
}
private MyObject(Parcel in) {
someString = in.readString();
someInteger = in.readInt();
}
public static final Parcelable.Creator<MyObject> CREATOR =
new Parcelable.Creator<MyObject>() {
@Override
public MyObject createFromParcel(Parcel source) {
return new MyObject(source);
}
@Override
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};
// Getters and setters
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(someString);
dest.writeInt(someInteger);
}
}
Run Code Online (Sandbox Code Playgroud)
这是发生了什么.如果实现了Parcelable
接口,则必须创建一个私有构造函数,该构造函数将a Parcel
作为参数.这Parcel
包含所有序列化值.
您必须Parcelable.Creator
使用名称实现嵌套类,CREATOR
因为在重新创建对象时Android将调用此类.
该方法describeContents()
仅用于特殊情况.您可以保留原样,返回值为0
.
有趣的行为发生在writeToParcel()
你的名字告诉你将数据写入Parcel
对象的地方.
现在,您可以Intent
在此示例中直接将自定义对象添加到类似对象中.
MyObject myObject = new MyObject();
Intent i = new Intent();
i.setExtra("MY_OBJECT", myObject);
// implicit or explicit destination declaration
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3109 次 |
最近记录: |