如何将数据对象保存在 retrofit2 的 sharedpreference 中。里面有更多信息
How to save data object in sharedpreference from retrofit2. More information inside
我有数据class:
@Parcelize
data class CurrentUser(
@SerializedName("id")
val id: String,
@SerializedName("name")
val firstName: String,
@SerializedName("surname")
val lastName: String,
@SerializedName("avatarPath")
val avatarPath: String,
@SerializedName("manager")
val manager: ResourceManager,
@SerializedName("department")
val department: Departments,
@SerializedName("role")
val role: Role,
@SerializedName("email")
val email: String,
@SerializedName("status")
val status: String,
@SerializedName("country")
val country: Countries,
@SerializedName("city")
val city: Cities,
@SerializedName("activities")
val activities: List<String>
) : Parcelable
我正在使用 POST 查询(带有改造 2)并获取有关当前用户的信息:
@GET("url")
suspend fun getCurrentUser(
@HeaderMap headers: Map<String, String>
) : Response<CurrentUser, Error>
我想将这个当前用户保存到共享的共享首选项中,然后在几个片段中恢复这个当前用户
现在可以使用了,但是我在 ViewModel 中获取用户信息,但我想在 SharedPreference 中进行
谢谢
您应该将其转换为 JSON 并将其存储为字符串:
class SharedPreferenceManager(val context: Context) {
private val PREFS_NAME = "sharedpref"
val sharedPref: SharedPreferences =
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
fun saveUSer(user: CurrentUser) {
sharedPref.edit().putString("user", Gson().toJson(user)).apply()
}
fun getUser(): CurrentUser? {
val data = sharedPref.getString("user", null)
if (data == null) {
return null
}
return Gson().fromJson(data, CurrentUser::class.java)
}
}
我有数据class:
@Parcelize
data class CurrentUser(
@SerializedName("id")
val id: String,
@SerializedName("name")
val firstName: String,
@SerializedName("surname")
val lastName: String,
@SerializedName("avatarPath")
val avatarPath: String,
@SerializedName("manager")
val manager: ResourceManager,
@SerializedName("department")
val department: Departments,
@SerializedName("role")
val role: Role,
@SerializedName("email")
val email: String,
@SerializedName("status")
val status: String,
@SerializedName("country")
val country: Countries,
@SerializedName("city")
val city: Cities,
@SerializedName("activities")
val activities: List<String>
) : Parcelable
我正在使用 POST 查询(带有改造 2)并获取有关当前用户的信息:
@GET("url")
suspend fun getCurrentUser(
@HeaderMap headers: Map<String, String>
) : Response<CurrentUser, Error>
我想将这个当前用户保存到共享的共享首选项中,然后在几个片段中恢复这个当前用户
现在可以使用了,但是我在 ViewModel 中获取用户信息,但我想在 SharedPreference 中进行
谢谢
您应该将其转换为 JSON 并将其存储为字符串:
class SharedPreferenceManager(val context: Context) {
private val PREFS_NAME = "sharedpref"
val sharedPref: SharedPreferences =
context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
fun saveUSer(user: CurrentUser) {
sharedPref.edit().putString("user", Gson().toJson(user)).apply()
}
fun getUser(): CurrentUser? {
val data = sharedPref.getString("user", null)
if (data == null) {
return null
}
return Gson().fromJson(data, CurrentUser::class.java)
}
}