导依赖
compile 'org.greenrobot:eventbus:3.0.0' compile'org.greenrobot:greendao:3.0.1' compile'org.greenrobot:greendao-generator:3.0.0' compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0'
list展示数据
httpconfig类
public class HttpConfig { // https://www.zhaoapi.cn/product/getProducts?pscid=1 public static String base_url="https://www.zhaoapi.cn/"; }
@Entity实体类 public class GoodsData { @Id(autoincrement = true) private Long id; private String json; public String getJson() { return this.json; } public void setJson(String json) { this.json = json; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Generated(hash = 1466404151) public GoodsData(Long id, String json) { this.id = id; this.json = json; } @Generated(hash = 1868386571) public GoodsData() { } @Override public String toString() { return "GoodsData{" + "id=" + id + ", json='" + json + '\'' + '}'; } }
服务类
public interface MyServcie { @GET("product/getProducts") Call<GoodsBean> getGoodlist(@Query("pscid") int pscid);
初始化GreenDao
public class MyApp extends Application { private static MyApp myApp; private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); myApp=this; DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "demo.db", null); SQLiteDatabase database = helper.getReadableDatabase(); DaoMaster daoMaster = new DaoMaster(database); daoSession = daoMaster.newSession(); } public static MyApp instance(){ return myApp; } public DaoSession getDaoSession(){ return daoSession;
}
在MainActivity里判断是否有网,有网请求数据存入数据库没网从数据库获取数据展示
public class MainActivity extends AppCompatActivity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = findViewById(R.id.listview); boolean b = hasNet(); //判断有否网络 if (b){ Retrofit retrofit = new Retrofit.Builder() .baseUrl(HttpConfig.base_url) .addConverterFactory(GsonConverterFactory.create(new Gson())) .build(); MyServcie myServcie = retrofit.create(MyServcie.class); myServcie.getGoodlist(1).enqueue(new Callback<GoodsBean>() { @Override public void onResponse(Call<GoodsBean> call, Response<GoodsBean> response) { GoodsBean body = response.body(); List<GoodsBean.DataBean> list = body.getData(); //展示 MyAdapter myAdapter = new MyAdapter(MainActivity.this, list); listview.setAdapter(myAdapter); //存入数据库 MyApp myApp = MyApp.instance(); GoodsDataDao dataDao = myApp.getDaoSession().getGoodsDataDao(); GoodsData goodsData=new GoodsData(); String json= new Gson().toJson(body); goodsData.setJson(json); dataDao.insert(goodsData); } @Override public void onFailure(Call<GoodsBean> call, Throwable t) { } }); }else { MyApp myApp = MyApp.instance(); GoodsDataDao dataDao = myApp.getDaoSession().getGoodsDataDao(); List<GoodsData> list = dataDao.queryBuilder().build().list(); String json = list.get(0).getJson(); GoodsBean goodsBean = new Gson().fromJson(json, GoodsBean.class); List<GoodsBean.DataBean> list1 = goodsBean.getData(); MyAdapter myAdapter=new MyAdapter(MainActivity.this,list1); listview.setAdapter(myAdapter); } } //判断有没有网 public boolean hasNet() { // 获得网络状态管理器 ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 建立网络数组 NetworkInfo[] net_info = connectivityManager.getAllNetworkInfo(); if (net_info != null) { for (int i = 0; i < net_info.length; i++) { // 判断获得的网络状态是否是处于连接状态 if (net_info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } }适配器就不写了