我知道如何通過捆綁發送簡單的數組,但知道我要送這樣的事情:數組,HashMap,字符串 - 如何通過Bundle發送它?
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
如何發送,並通過捆綁retrive呢?
我知道如何通過捆綁發送簡單的數組,但知道我要送這樣的事情:數組,HashMap,字符串 - 如何通過Bundle發送它?
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
如何發送,並通過捆綁retrive呢?
ArrayLists和HashMaps是可序列化的對象。所以只需使用Bundle#putSerializable(bundleKey, serializable)
。
如果您想要更多的OOP方法,您可以將要發送的數據封裝到實現Parcelable
的對象中(比如類型SongData
)。一個例子見this post。也看到了reference documentation爲Parcelable
:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
發信人類
bundle.putSerializable("something", songsListData);
和接收機類
ArrayList<HashMap<String, String>> songsListData = (ArrayList<HashMap<String, String>>)bundle.getSerializable("something");
;
使用類似發信人
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
intent.putExtra("song_list", songsListData);
,比接收機類以下
ArrayList<String> myList = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("song_list");
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
Gson gson = new Gson();
String str_json = gson.toJson(songsListData);
Bundle bundle=new Bundle();
bundle.putString("data",str_json);
使用GSON轉換ArrayList的數據轉換成字符串
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<HashMap<String, String>>>() {}.getType();
ArrayList<HashMap<String, String>> arrayList = gson.fromJson(data, type);
對於reciever類
對不起,什麼是捆綁檢索數據? – GhostCat
您應該更喜歡接口類型(例如List,Map)到實現類型;你應該把它們封裝在數據結構以外的對象中。壞封裝。 – duffymo