簡體   English   中英

如何將 parcelable 與 setter 和 getter 一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM