GreenDao+Retrofit+EventBus

导依赖

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;
    }
}
适配器就不写了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值