1.将这两行添加到 build.gradle(app)
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
2。创建以下结构
->API
->ApiClient
->ApiInterface
->database
->dbHelper
->itemDB
->models
->IitemResult
->restItems
3. ApiCleint.java
package test.com.testapp.API;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class APIClient {
public static final String BASE_URL = "TEST_URL";
private static Retrofit retrofit = null;
public static Retrofit getClient()
{
if (retrofit == null)
{
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
4. ApiInterface.java
package test.com.testapp.API;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.http.GET;
import test.com.testapp.models.IItemResult;
public interface ApiInterface {
@GET("String id")
Call<IItemResult> getItems();
}
5. dbHelper.java
package test.com.testapp.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
import test.com.testapp.models.restItems;
public class dbHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "DsTest";
public dbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(ItemDB.CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + ItemDB.TABLE_NAME);
onCreate(sqLiteDatabase);
}
public long InsertItem(restItems restItem){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(ItemDB.COLUMN_BRAND_DEC, restItem.getBrandDesc());
values.put(ItemDB.COLUMN_MRP, restItem.getmRP());
values.put(ItemDB.COLUMN_VAT_RATE, restItem.getVatRate());
long id = db.insert(ItemDB.TABLE_NAME, null, values);
db.close();
return id;
}
public List<restItems> getItemList(){
List<restItems> restItems =new ArrayList<>();
String selectQuery = "SELECT * FROM " + ItemDB.TABLE_NAME + " ORDER BY " +
ItemDB.COLUMN_ID + " DESC";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
restItems item = new restItems();
// item.setId(cursor.getInt(cursor.getColumnIndex(Note.COLUMN_ID)));
item.setBrandDesc(cursor.getColumnName(1));
item.setmRP(cursor.getColumnName(2));
item.setVatRate(cursor.getColumnName(3));
restItems.add(item);
} while (cursor.moveToNext());
}
db.close();
return restItems;
}
}
6. ItemDb.java
package test.com.testapp.database;
public class ItemDB {
public static final String TABLE_NAME = "items";
public static final String COLUMN_ID = "id";
public static final String COLUMN_BRAND_DEC = "brand_dec";
public static final String COLUMN_MRP = "mrp";
public static final String COLUMN_VAT_RATE = "vat_rate";
private String Id;
private String Brand_Desc;
private String Mrp;
private String Vat_rate;
public ItemDB(String id, String brand_Desc, String mrp, String vat_rate) {
Id = id;
Brand_Desc = brand_Desc;
Mrp = mrp;
Vat_rate = vat_rate;
}
public ItemDB() {
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getBrand_Desc() {
return Brand_Desc;
}
public void setBrand_Desc(String brand_Desc) {
Brand_Desc = brand_Desc;
}
public String getMrp() {
return Mrp;
}
public void setMrp(String mrp) {
Mrp = mrp;
}
public String getVat_rate() {
return Vat_rate;
}
public void setVat_rate(String vat_rate) {
Vat_rate = vat_rate;
}
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + "INTEGER PRIMARY KEY AUTO INCREMENT,"
+ COLUMN_BRAND_DEC + "TEXT,"
+ COLUMN_MRP + "TEXT,"
+ COLUMN_VAT_RATE + "TEXT"
+ ")";
}
7. restItems.java
package test.com.testapp.models;
import com.google.gson.annotations.SerializedName;
public class restItems {
@SerializedName("Brand")
private String brand;
@SerializedName("MRP")
private String mrp;
@SerializedName("VAT")
private String vat;
public restItems(String brand, String mrp, String vat) {
this.brand = brand;
this.mrp = mrp;
this.vat = vat;
}
public restItems() {
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getMrp() {
return mrp;
}
public void setMrp(String mrp) {
this.mrp = mrp;
}
public String getVat() {
return vat;
}
public void setVat(String vat) {
this.vat = vat;
}
@Override
public String toString() {
return "restItems{" +
"brand='" + brand + '\'' +
", mrp='" + mrp + '\'' +
", vat='" + vat + '\'' +
'}';
}
}
8. IItemResult .java
package test.com.testapp.models;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class IItemResult {
@SerializedName("iItemResult")
private List<restItems>iItemResult = null;
public IItemResult(List<restItems> iItemResult) {
this.iItemResult = iItemResult;
}
public void setiItemResult(List<restItems> iItemResult) {
this.iItemResult = iItemResult;
}
public List<restItems> getiItemResult() {
return iItemResult;
}
}
9. MainActivity.java
package test.com.testapp;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import test.com.testapp.API.APIClient;
import test.com.testapp.API.ApiInterface;
import test.com.testapp.database.dbHelper;
import test.com.testapp.models.IItemResult;
public class MainActivity extends AppCompatActivity {
private Button getData;
private ProgressBar bar;
private dbHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getData = (Button)findViewById(R.id.btnGet);
bar = (ProgressBar)findViewById(R.id.pBar);
getData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new insertData().execute("");
}
});
}
private class insertData extends AsyncTask<String, Void, String>
{
@Override
protected void onPreExecute() {
bar.setVisibility(View.VISIBLE);
}
@Override
protected String doInBackground(String... strings) {
ApiInterface apiInterface = APIClient.getClient().create(ApiInterface.class);
db = new dbHelper(getApplicationContext());
Call<IItemResult>resultCall = apiInterface.getItems();
resultCall.enqueue(new Callback<IItemResult>() {
@Override
public void onResponse(Call<IItemResult> call, Response<IItemResult> response) {
System.out.println("MAIN_ACTIVITY" + response.body().getiItemResult().size());
System.out.println(response.body().getiItemResult().get(1));
for (int i=0; i<response.body().getiItemResult().size(); i++)
{
db.InsertItem(response.body().getiItemResult().get(i));
}
System.out.println("DB_RESULT: " + db.getItemList());
}
@Override
public void onFailure(Call<IItemResult> call, Throwable t) {
}
});
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
bar.setVisibility(View.GONE);
}
}
}