所以我正在制作一个简单的酒单应用程序。主要 Activity 有三项。
MainActivity - 这是 Wine 列表的位置,还有一个可带您前往 AddWineActivity 的 FAB。此页面上的每个列表项仅显示缩略图、 Wine 名称、价格和评级。
AddWineActivity - 有几个 EditText(用于获取 Wine 的名称、价格和描述)、一个评级栏(用于获取 Wine 评级)和一个按钮,用于将详细信息转换为字符串并将其放入 Intent 额外。
WineDetailsActivity - 这将有一个不错的页面,其中包含您单击的列表中的 Wine 的所有详细信息。
我的应用程序目前几乎按照我想要的方式运行。唯一的事情是,我需要实际保存 Wine 列表,这样在您返回添加另一种 Wine 后,或者如果您离开应用程序并返回,它就不会重置。
这是棘手的部分(这没有帮助,因为我还不太了解如何保存到设备)。我使用类添加到数组列表中。
我有一个 Wine 类,它的构造函数如下所示:
public Wine(String mWineName, String mWinePrice, String mWineRating, String mWineDescription, int mWineImageResourceID) {}
然后在MainActivity上,添加到列表中,如下所示
wines.add(new Wine(getIntent().getStringExtra("WINENAME"), getIntent().getStringExtra("WINEPRICE"), getIntent().getStringExtra("WINERATING"), getIntent().getStringExtra("WINEDESCRIPTION"), R.drawable.mywinelogo));
<小时/>
将类似列表添加到设备的推荐方法是什么?它仍然是共享偏好还是我没有走在正确的轨道上?
如果需要有关该应用的更多详细信息,只需询问,我会提供。
谢谢!
最佳答案
What would be the recommended way to add a list that looks like that to the device? Would it still be shared preferences or am I not on the right track?
最后,您将获得一个表格数据结构:行( Wine )和列(名称、评级等)。
当您有表格数据结构时,请将其保存为适合表格的结构。这可能是 SQLite 数据库或某种形式的文件(例如 JSON、XML)。
SharedPreferences
不太适合这种情况。您可以将表转换为 JSON 并将其存储为字符串首选项,但这相对不常见。恕我直言,只有当您的其余大部分数据对于 SharedPreferences 来说更自然(例如,您使用 PreferenceScreen 来收集它们)并且想要保留所有内容时,这才有意义一起。
关于java - 使用类的构造函数创建的 ArrayList 可以保存到 SharedPreferences 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46144456/