【问题标题】:Save a List of custom object in savedInstanceState在 savedInstanceState 中保存自定义对象列表
【发布时间】:2017-12-07 19:56:44
【问题描述】:

我目前正在构建一个应用程序来检索远程服务器的信息。收到的数据是 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 选项。

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

有什么想法吗?

问候

【问题讨论】:

  • 你为什么这么犹豫只做Parcelable?这是正确的做法,不会弄乱 JSON 的提取。

标签: android json android-recyclerview


【解决方案1】:

使您的模型对象可辨认。

有一个很棒的扩展,https://plugins.jetbrains.com/plugin/7332-android-parcelable-code-generator,它会为你的类生成必要的 parcelable 方法。

我强烈推荐它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多