Raf*_*afa 0 android json parcelable
我有一个 JSON 对象的数组列表,我试图像这样传递。
ArrayList<JSONObject> entryCities = new ArrayList<>();
for(int i = 0; i < entries.length(); i++){
entryCities.add(entries.getJSONObject(i));
}
Intent intent = new Intent(UnitedStatesActivity.this, StateActivity.class);
intent.putExtra("object", entryCities);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,我需要使我的数组或数组中的 JSON 对象可分割。我开始查看文档并提出了我想要传递的这个类ArrayList<JSONObject>,但我不确定应该在我的writeToParcel()方法中添加什么。
我是否写出了我想要提取的 JSON 对象的具体值?即
out.object.getString("string")然后将我的可包裹对象传递到下一个活动?我只是不确定在使 JSON 对象可打包的上下文中该方法的内容应该是什么。
公共类 StateParcelable 扩展 JSONObject 实现 Parcelable {
ArrayList<JSONObject> list;
public StateParcelable(ArrayList<JSONObject> list){
this. list = list;
}
public void writeToParcel(Parcel out, int flags) {
}
public int describeContents(){
return 0;
}
public static final Parcelable.Creator<StateParcelable> CREATOR
= new Parcelable.Creator<StateParcelable>() {
public StateParcelable createFromParcel(Parcel in) {
return new StateParcelable(in);
}
public StateParcelable[] newArray(int size) {
return new StateParcelable[size];
}
};
private StateParcelable(Parcel in) {
}
Run Code Online (Sandbox Code Playgroud)
既然您已经拥有(看起来是)JSONObjects 的 JSONArray,为什么不将其转换为字符串,传递它,并从中重建 JSONArray 呢?
Intent intent = new Intent(UnitedStatesActivity.this, StateActivity.class);
intent.putExtra("object", entries.toString());
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
然后在以下 Activity 中:
JSONArray entries = new JSONArray(getIntent().getStringExtra("object"));
Run Code Online (Sandbox Code Playgroud)
否则,是的,您必须循环遍历并序列化 ArrayList 中的各个项目,然后重建并将它们添加到列表中。
另外,附带说明一下,您可以以相同的方式传递各个 JSONObject:分别是 viatoString()和new JSONObject(getIntent().getStringExtra("object"))。
| 归档时间: |
|
| 查看次数: |
5438 次 |
| 最近记录: |