[英]How to use parcelable with setters and getters?
我正在使用 parcelable 實現,因為使用putParcelableArrayListExtra
傳遞 ArrayList 更容易,但是protected Song(Parcel in) and public void writeToParcel(Parcel dest, int flags)
的目的是什么
我的可包裹 class
public class Song implements Parcelable {
private long id = 0;
private String data = "";
private String title = "";
private String artist = "";
public Song(){
}
protected Song(Parcel in) {
id = in.readLong();
data = in.readString();
title = in.readString();
artist = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
dest.writeString(data);
dest.writeString(title);
dest.writeString(artist);
}
public void setId(long songId){ this.id = songId; }
public long getId(){
return id;
}
public void setData(String data) { this.data = data; }
public String getData(){return data;}
//Optional meta data
public void setTitle(String title){ this.title = title; }
public String getTitle() { return title; }
public void setArtist(String artist){
this.artist = artist;
}
public String getArtist() {
return artist;
}
對於它的用途,如果我沒有將任何參數傳遞給我的 Song() 構造函數,我是否還需要添加它,或者我可以將它留空嗎?
protected Song(Parcel in) {
id = in.readLong();
data = in.readString();
title = in.readString();
artist = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
dest.writeString(data);
dest.writeString(title);
dest.writeString(artist);
}
我們需要這個方法,因為它覆蓋了方法,並且如果你不刪除它並手動制作 setter 和 getter,getter 和 setter 將自動工作
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
dest.writeString(data);
dest.writeString(title);
dest.writeString(artist);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.