Android 如何序列化自定义arraylist对象并将其保存到sqlite数据库?
我想在sqlite数据库中保存自定义arraylist对象,当我在internet上搜索它时,我知道我需要将类序列化。但问题是,我的那个类是Parcelable,我在Parcelable的帮助下将值从一个活动发送到另一个活动 医学类Android 如何序列化自定义arraylist对象并将其保存到sqlite数据库?,android,sqlite,parsing,serialization,arraylist,Android,Sqlite,Parsing,Serialization,Arraylist,我想在sqlite数据库中保存自定义arraylist对象,当我在internet上搜索它时,我知道我需要将类序列化。但问题是,我的那个类是Parcelable,我在Parcelable的帮助下将值从一个活动发送到另一个活动 医学类 public class Medicine implements Parcelable { // Private Variables int _id; String _product_Code; String _product_name; String _typ
public class Medicine implements Parcelable {
// Private Variables
int _id;
String _product_Code;
String _product_name;
String _type;
int _price;
int _quantity;
//empty constructor
public Medicine(){
}
//constructor
public Medicine(int id, String product_code,String product_name, String type, int price, int quantity){
this._id = id;
this._product_Code = product_code;
this._product_name = product_name;
this._type = type;
this._price = price;
this._quantity = quantity;
}
public Medicine(String product_code,String product_name, String type, int price, int quantity){
this._product_Code = product_code;
this._product_name = product_name;
this._type = type;
this._price = price;
this._quantity = quantity;
}
public String get_product_Code() {
return _product_Code;
}
public void set_product_Code(String _product_Code) {
this._product_Code = _product_Code;
}
public Medicine(Parcel p){
set_id(p.readInt());
set_product_name(p.readString());
set_type(p.readString());
set_price(p.readInt());
set_quantity(p.readInt());
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String get_product_name() {
return _product_name;
}
public void set_product_name(String _product_name) {
this._product_name = _product_name;
}
public String get_type() {
return _type;
}
public void set_type(String _type) {
this._type = _type;
}
public int get_price() {
return _price;
}
public void set_price(int _price) {
this._price = _price;
}
public int get_quantity() {
return _quantity;
}
public void set_quantity(int _quantity) {
this._quantity = _quantity;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeInt(get_id());
dest.writeString(get_product_name());
dest.writeString(get_type());
dest.writeInt(get_price());
dest.writeInt(get_quantity());
}
public static final Parcelable.Creator<Medicine> CREATOR = new Creator<Medicine>() {
public Medicine createFromParcel(Parcel source) {
return new Medicine(source);
}
public Medicine[] newArray(int size) {
return new Medicine[size];
}
};
下面是SelectedMedicineList类的onCreate方法,我正在接收该方法的意图。现在我想在我的数据库中创建这个selectedProductsarraylist。请告诉我它的解决方案或代码
public ArrayList<Medicine> selectedProducts = new ArrayList<Medicine>();
DatabaseHandler db = new DatabaseHandler(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selected_medicine_info);
selectedProducts = getIntent().getParcelableArrayListExtra("myArrayL");
LinkedHashSet<Medicine> hs = new LinkedHashSet<Medicine>();
hs.addAll(selectedProducts);
selectedProducts.clear();
selectedProducts.addAll(hs);
}
public ArrayList selectedProducts=new ArrayList();
DatabaseHandler db=新的DatabaseHandler(此);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.selected\u medicine\u info);
selectedProducts=getIntent().getParcelableArrayListExtra(“myArrayL”);
LinkedHashSet hs=新LinkedHashSet();
hs.addAll(选定产品);
selectedProducts.clear();
所选产品。添加全部(hs);
}
您可以使用库来保存和检索任何数据结构中的数据。其思想是库将对象转换(序列化和反序列化)为JSON
格式
因此,创建一个字段类型为TEXT
的数据库列,并将arraylist转换为JSON对象,如下所示:
Gson gson = new Gson();
String arrayList = gson.toJson(yourArraylist);
并将该字符串保存到数据库中
在检索时,从数据库中获取一个字符串,并将其转换为原始列表
Type listType = new TypeToken<ArrayList<YourClass>>() {
}.getType();
List<YourClass> yourClassList = new Gson().fromJson(jsonArray, listType);
Type listType=new-TypeToken(){
}.getType();
List yourClassList=new Gson().fromJson(jsonArray,listType);
希望这个有帮助我尝试了你的这个方法,但我得到了错误,它没有以字符串格式保存
Type listType = new TypeToken<ArrayList<YourClass>>() {
}.getType();
List<YourClass> yourClassList = new Gson().fromJson(jsonArray, listType);