【问题标题】:How to save an Object containing an ArrayList of View-objects?如何保存包含视图对象的 ArrayList 的对象?
【发布时间】:2013-10-19 21:48:29
【问题描述】:

我有一个包含ArrayList<View> 的类。该课程对我有用,但我还无法保存(在本地归档)它。 有没有可能呢? 我试过SerializableExternalizable,但总是得到NotSerializableException。 设置为瞬态也不起作用。 这就是代码(我知道Serializable 不起作用):

public class ViewsData implements Serializable {

    private  ArrayList<View> viewsList = new ArrayList<View>();

    public ViewsData () {

    }


    public ArrayList<View> getViewsList() {
        return viewsList;
    }

    public void addToViewsList(View view) {     
        viewsList.add(view);        
    }
}

我非常感谢您对此的任何提示。

【问题讨论】:

  • 你应该实现 Parcelable。 stackoverflow.com/questions/7042272/…
  • 据此:stackoverflow.com/questions/15448623/… 你不应该那样做。
  • 哦,我不知道您要将其保存到文件中。我以为你只是想以某种方式编组它。所以我认为你可以实现 Serializable 并且在序列化期间只需遍历 arraylist 并独立保存每个元素。反序列化的方式正好相反:创建 arraylist 并用数据填充它。
  • 不,它不接受视图元素(如 EditText、Button、TextView 和 s.o.)......这正是我的问题。他们没有实现 Serializable。
  • 但是为什么你真的想把它保存在文件中呢?因为序列化 View 并反序列化它不是一个好主意。一个视图有一个上下文,它可以在你提交序列化版本和你反序列化它的时间之间被销毁。

标签: java android


【解决方案1】:

我已经做了一些与您尝试做的非常相似的事情,这是我解决它的方法。

我所做的是使用数据库来存储所有信息。以及创建此信息视图的新类。

每次启动应用程序时,我都必须从数据库字符串重新创建 ArrayList。但这对我来说非常方便。

当您在 ArrayList 中添加视图时,请确保您通过数据库而不只是插入视图。

【讨论】:

  • 嗯,我确实有类似的东西。但我认为将视图直接存储在 ArrayList 中可能比在包含有关如何创建它们的信息的列表中更好的代码...
  • 那么你就可以了。通常,您不想将视图保存到文件中,因为视图使用的上下文可能会发生变化。
猜你喜欢
  • 2016-04-12
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 2012-12-04
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多