Android 如何序列化自定义arraylist对象并将其保存到sqlite数据库?

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

我想在sqlite数据库中保存自定义arraylist对象,当我在internet上搜索它时,我知道我需要将类序列化。但问题是,我的那个类是Parcelable,我在Parcelable的帮助下将值从一个活动发送到另一个活动

医学类

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);