Search code examples
androidsqlitegsonandroid-volleycontent-values

Insert Gson Data into Android Sqlite


I am calling a web service I got data in array[]. I wanted to insert this data inside sqlite database. I have database structure same at server and sqlite as well.

Let's start with model class

public class RateList {

    public int id;
    public String Name;
    public String description;
    public String amount;
    public String image;
}

I am using volley to get data from web service. I am getting data in desire format below code is only require part of code

public void onResponse(String response) {
       Log.e("response",response);
       RateList[] itemList;
       itemList = new Gson().fromJson(response, RateList[].class);
       helper.insertData(itemList);
}

This is response I get from web service.

[
  {
    "id": "1",
    "Name": "pendrive",
    "description": "8 GB",
    "amount": "350",
    "image": "http://my_website_url/Demo/images/9.png"
  },
  {
    "id": "2",
    "Name": "headphone",
    "description": "",
    "amount": "4500",
    "image": "http://my_website_url/Demo/images/1.png"
  },
  .
  .
  .
]

Now I am trying to insert RateList[] itemList this Gson data into database this is my DbHelper code.

public void insertData(RateList[] itemList) {

    db = getWritableDatabase();

    for (int i = 0; i < itemList.length; i++) {
        ContentValues contentValues = new ContentValues();
        contentValues.put("id", ""+itemList[i].id);
        contentValues.put("Name", itemList[i].Name);
        contentValues.put("description", itemList[i].description);
        contentValues.put("amount", itemList[i].amount);
        contentValues.put("image", itemList[i].image);
        db.insert(tableName, null, contentValues);
    }
}

When I debug my app contentValues shows key = 0 and value = 1; I don't know where I made mistake. I searched on online but there was no specific example for this.


Solution

  • In the insertData function, Try initiating the contentValues just once before the for loop.

    db = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
        for (int i = 0; i < itemList.length; i++) {
           ...
            db.insert(tableName, null, contentValues);
        }