
[英]Save and Retrieve http Response List object in SharedPreferences Between Activities
[英]Save and Retrieve http Response List object in SharedPreferences Between Activities
我在理解 sharedPreferences 以及如何在不同活动之间保存和检索对象列表时遇到了一些麻烦。 我遵循了其他多个问题的步骤,我将在下面列出它们,但是无论我如何更改它,我都会遇到转换不匹配的问题。 我确实可以访问保存在 sharedPreference 中的列表,但我无法将其转换回 object 列表。 我执行 http 请求并将响应 object 列表保存到 sharedpreferences 并最终开始下一个意图的主要活动代码是:
private fun getItems(authResponse: AuthResponseModel) {
val url = "/Api/items";
val formBody = FormBody.Builder()
.add("token", authResponse.cloverToken.toString())
.build()
// creating request
var request = Request.Builder()
.addHeader("Authorization", "Bearer " + authResponse.token.toString())
.url(url)
.post(formBody)
.build()
var client = OkHttpClient();
runOnUiThread{
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
var response = response.body?.string();
//save auth token
val gson = Gson()
System.out.println("clover 2: " + gson.toJson(response));
val preferences = getSharedPreferences("items", MODE_PRIVATE)
preferences.edit().putString("items", gson.toJson(response)).commit()
val intent = Intent(this@MainActivity, OrderActivity::class.java)
intent.putExtra("SHOW_WELCOME", true)
startActivity(intent)
finish()
}
})
}
}
我如何在其他活动中检索数据如下:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_order)
initialize()
var arrayItems: List<ItemModel>;
initPermissions()
val itemList = getSharedPreferences("items", MODE_PRIVATE)
val gson = Gson()
if (itemList != null) {
val type = object : TypeToken<List<ItemModel>>() {}.type
arrayItems = gson.fromJson(gson.toJson(itemList), type)
println("here items " +arrayItems.toString())
}
//this.items = (itemList);
}
我需要这些项目是从 sharedpreferences 返回的 ItemModel 对象的列表。 我得到的主要错误是转换。 让我知道是否需要任何进一步的信息,我会更新我的问题。
ItemModel 代码是:
package com.robotemi.sdk.dinengo.models;
import java.util.ArrayList;
public class ItemModel {
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
private String alternateName;
private String code;
private String priceType;
private String unitName;
private boolean sku;
private boolean isRevenue;
private boolean available;
private boolean autoManage;
private boolean defaultTaxRates;
private double price;
private double cost;
private double stockCount;
private int modifiedTime;
public ItemModel() {}
public ItemModel(ItemModel itemModel) {
this.id = itemModel.id;
this.name = itemModel.name;
this.alternateName = itemModel.alternateName;
this.code = itemModel.code;
this.priceType = itemModel.priceType;
this.unitName = itemModel.unitName;
this.sku = itemModel.sku;
this.isRevenue = itemModel.isRevenue;
this.available = itemModel.available;
this.autoManage = itemModel.autoManage;
this.defaultTaxRates = itemModel.defaultTaxRates;
this.price = itemModel.price;
this.cost = itemModel.cost;
this.stockCount = itemModel.stockCount;
this.modifiedTime = itemModel.modifiedTime;
}
public ArrayList<ItemModel> ItemModel(ItemModel[] itemModel) {
ArrayList items = new ArrayList<ItemModel>();
for(int i = 0; i <itemModel.length ; i++ ){
ItemModel item = new ItemModel();
item.id = itemModel[i].id;
item.name = itemModel[i].name;
item.alternateName = itemModel[i].alternateName;
item.code = itemModel[i].code;
item.priceType = itemModel[i].priceType;
item.unitName = itemModel[i].unitName;
item.sku = itemModel[i].sku;
item.isRevenue = itemModel[i].isRevenue;
item.available = itemModel[i].available;
item.autoManage = itemModel[i].autoManage;
item.defaultTaxRates = itemModel[i].defaultTaxRates;
item.price = itemModel[i].price;
item.cost = itemModel[i].cost;
item.stockCount = itemModel[i].stockCount;
item.modifiedTime = itemModel[i].modifiedTime;
items.add(item);
}
return items;
}
}
我调查过但没有运气的其他问题列表:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.