Android - 如何为List <string>和List <long>实现parcelable?</long> </string>

时间:2015-03-15 21:21:23

标签: android

我需要将这个类的对象发送给一个活动;但是我无法正确地实现周和每周的Posts属性的读写。

我试图回答这个问题的答案:How to implement parcelable for List<Long>

和此:Using an ArrayList<String> with a class that extends Parcelable,但不起作用。

提前致谢。

import java.util.ArrayList;
import java.util.List;

import android.os.Parcel;
import android.os.Parcelable;

public class Statistics implements Parcelable{

    private String forumName;
    private List<String> weeks = new ArrayList<String>();   
    private List<Long> weeklyPosts = new ArrayList<Long>();

    public Statistics(){

    }

    public Statistics (Parcel in){
        readFromParcel(in);
    }

    public static final Parcelable.Creator<Statistics> CREATOR
    = new Parcelable.Creator<Statistics>() {
        public Statistics createFromParcel(Parcel in) {
            return new Statistics(in);
        }

        public Statistics[] newArray(int size) {
            return new Statistics[size];
        }
    };

    @Override
    public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(forumName);
                               //How to write the weeks List<String> ?
                               //How to write the weeklyPosts List<Long> ?
    }

    private void readFromParcel(Parcel in) {

        forumName = in.readString();
                               //How to read the weeks List<String> ?
                               //How to read the weeklyPosts List<Long> ?

    }

    @Override
    public int describeContents() {
        return 0;
    }
}

1 个答案:

答案 0 :(得分:-1)

您可以将列表转换为数组(Long []和String []),然后使用

dest.writeLongArray(weeksArray); 
dest.writeStringArray(weeklyPostsArray); 

in.readLongArray();
in.readStringArray();

对于String列表,您还可以使用:

dest.writeStringList(weeks);

 in.readStringList();