在共享首选项中存储和检索类对象
在Android中,我们可以将类的对象存储在共享首选项中并稍后检索该对象吗?
如果可以的话该怎么做呢?如果不可能,还有哪些其他可能性?
我知道序列化是一种选择,但我正在寻找使用共享首选项的可能性。
In Android can we store an object of a class in shared preference and retrieve the object later?
If it is possible how to do it? If it is not possible what are the other possibilities of doing it?
I know that serialization is one option, but I am looking for possibilities using shared preference.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
是的,我们可以使用 Gson
从 GitHub
用于保存
用于获取
Update1
最新版本的 GSON 可以从 github.com/google/gson。
Update2
如果您使用 Gradle/Android Studio,只需将以下内容放入
build.gradle
依赖项部分 -Yes we can do this using Gson
Download Working code from GitHub
For save
For get
Update1
The latest version of GSON can be downloaded from github.com/google/gson.
Update2
If you are using Gradle/Android Studio just put following in
build.gradle
dependencies section -我们可以使用 Outputstream 将对象输出到内存中。并转换为字符串然后保存在首选项中。例如:
当我们需要从Preference中提取Object时。使用如下代码
we can use Outputstream to output our Object to internal memory. And convert to string then save in preference. For example:
when we need to extract Object from Preference. Use the code as below
不可能。
您只能在 SharedPrefences SharePreferences.Editor 中存储简单
值特别是关于您需要保存的课程吗?
Not possible.
You can only store, simple values in SharedPrefences SharePreferences.Editor
What particularly about the class do you need to save?
我遇到了同样的问题,这是我的解决方案:
我有类
MyClass
和ArrayList
我想将其保存到共享首选项。首先,我向MyClass
添加了一个方法,将其转换为 JSON 对象:然后这是保存对象
ArrayList的方法: items
:这是检索对象的方法:
请注意,共享首选项中的
StringSet
自 API 11 起可用。I had the same problem, here's my solution:
I have class
MyClass
andArrayList<MyClass>
that I want to save to Shared Preferences. At first I've added a method toMyClass
that converts it to JSON object:Then here's the method for saving object
ArrayList<MyClass> items
:And here's the method for retrieving the object:
Note that
StringSet
in Shared Preferences is available since API 11.使用 Gson 库:
存储:
检索:
Using Gson Library:
Store:
Retrieve:
使用这个对象 --> TinyDB--Android-Shared-Preferences-Turbo 非常简单。
你可以用它保存大多数常用的对象,如数组、整数、字符串列表等
Using this object --> TinyDB--Android-Shared-Preferences-Turbo its very simple.
you can save most of the commonly used objects with it like arrays, integer, strings lists etc
您可以使用 Complex Preferences Android - by Felipe Silvestre 库来存储自定义对象。
基本上,它使用GSON机制来存储对象。
将对象保存到首选项中:
并将其检索回来:
You can use Complex Preferences Android - by Felipe Silvestre library to store your custom objects.
Basically, it's using GSON mechanism to store objects.
To save object into prefs:
And to retrieve it back:
您可以使用 GSON,使用 Gradle Build.gradle :
然后在您的代码中,例如使用 Kotlin 的字符串/布尔值对:
添加到 SharedPrefs :
现在检索数据:
You could use GSON, using Gradle Build.gradle :
Then in your code, for example pairs of string/boolean with Kotlin :
Adding to SharedPrefs :
Now to retrieve data :
共同共享偏好 (CURD)
SharedPreference:使用简单的 Kotlin 类以值键对的形式存储数据。
存储数据:
为了存储 String、Int 和 Boolean 数据,我们有三个具有相同名称和不同参数的方法(方法重载)。
检索数据:
要检索 SharedPreferences 中存储的数据,请使用以下方法。
清除所有数据:
要清除整个 SharedPreferences,请使用以下代码。
删除特定数据:
公共共享偏好类
博客:
https://androidkeynotes.blogspot.com/2020/02/shared-preference。 html
Common shared preference (CURD)
SharedPreference: to Store data in the form of value-key pairs with a simple Kotlin class.
Storing Data:
To store String, Int and Boolean data we have three methods with the same name and different parameters (Method overloading).
Retrieve Data:
To Retrieve the data stored in SharedPreferences use the following methods.
Clear All Data:
To clear the entire SharedPreferences use the below code.
Remove Specific Data:
Common Shared Preference Class
Blog:
https://androidkeynotes.blogspot.com/2020/02/shared-preference.html
无法在 SharedPreferences 中存储对象,我所做的是创建一个公共类,放置我需要的所有参数并创建 setter 和 getter,我能够访问我的对象,
There is no way to store objects in SharedPreferences, What i did is to create a public class, put all the parameters i need and create setters and getters, i was able to access my objects,
即使应用程序关闭后或仅在其运行期间,您是否需要检索对象?
您可以将其存储到数据库中。
或者简单地创建一个自定义应用程序类。
然后从每项活动中:
这不是最好的方法,但它有效。
Do you need to retrieve the object even after the application shutting donw or just during it's running ?
You can store it into a database.
Or Simply create a custom Application class.
And then from every activities do :
Not really the best way but it works.
是的。您可以使用 Sharedpreference 存储和检索对象
Yes .You can store and retrive the object using Sharedpreference