在savedInstanceState中保存自定义对象列表

时间:2017-12-07 19:56:45

标签: android json android-recyclerview

我目前正在构建一个应用程序来检索远程服务器的信息。收到的数据是JSON,我使用下面的类构建数据列表:

public class RedditData {

    private RedditTopic data;

    public RedditTopic getData() {
        return data;
    }
}

和RedditTopic类定义如下:

public final class RedditTopic {
    private static final String TAG = RedditTopic.class.getSimpleName();

    private String author;
    private String thumbnail;
    private String title;
    private String num_comments;
    private long created_utc;
    private String data;
    private String name;

    public RedditTopic(){};

    public String getData() {
        return data;
    }

    public String getAuthor() {
        return author;
    }

    public String getThumbnail(){
        return thumbnail;
    }

    public String getTitle(){
        return title;
    }

    public String getComments(){
        return num_comments + " comments";
    }

    public long getCreated_utc(){
        return created_utc;
    }

    public String getRedditName(){
        return name;
    }
}

这两个类都用于将JSON转换为Object格式的数据。

我不想真正改变它们以使它们成为Parceable以避免影响JSON的提取。

我已添加:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    Log.d(TAG, ">>>>>>>>>>>>>>>>>>>>>>>> SAVE");
    savedInstanceState.putParcelableArrayList("RedditList", myListOfData );
    super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    Log.d(TAG, ">>>>>>>>>>>>>>>>>>>>>>>> RESTORE");
    List<RedditData> myListOfData = savedInstanceState.getParcelableArrayList("RedditList");
}

Android抱怨,因为我需要在我的类RedditData中实现Parceable,我也可能在RedditTopic类中也是如此,因为RedditData返回了一个RedditTopic列表。

有更好的方法吗?保留列表,不需要Parceable选项。

我没有字符串列表,它是一个对象列表。

有什么想法吗?

此致

1 个答案:

答案 0 :(得分:0)

让你的模型对象变得可以理解。

有一个很好的扩展,https://plugins.jetbrains.com/plugin/7332-android-parcelable-code-generator将为您的类生成必要的可分配方法。

我强烈推荐它。