依赖
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
implementation 'org.greenrobot:greendao:3.2.2'
// add library
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
implementation 'com.facebook.fresco:fresco:1.10.0'
implementation 'com.android.support:support-v4:28.0.0-rc02'
数据库
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // 只添加这一行
repositories {
google()
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
APP****************************
ublic class App extends Application {
private DaoSession daoSession;
private static App app;
@Override
public void onCreate() {
super.onCreate();
app = App.this;
//获取数据库对象
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "goods", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
//获取DaoSession
daoSession = daoMaster.newSession();
//初始化Fresco
Fresco.initialize(this);
}
public static App getInstance() {
return app;
}
public DaoSession getDaoSession() {
return daoSession;
}
}
MODEL
package com.baway.alex.weektestdemo.di.model;
import com.baway.alex.weektestdemo.data.App;
import com.baway.alex.weektestdemo.data.beans.HomeBean;
import com.baway.alex.weektestdemo.data.beans.HomeBeanDao;
import com.baway.alex.weektestdemo.data.beans.ResponseBean;
import com.baway.alex.weektestdemo.data.utils.OKHttpUtil;
import com.baway.alex.weektestdemo.di.IContract;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class ModelImpl implements IContract.IModel {
//请求地址
public static final String URL = "https://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1?tdsourcetag=s_pctim_aiomsg";
@Override
public void requestData(final OnCallBackLisenter onCallBackLisenter) {
//①首先从数据库去取数据
final HomeBeanDao homeBeanDao = App.getInstance().getDaoSession().getHomeBeanDao();
List<HomeBean> beanList = homeBeanDao.loadAll();
if (beanList.size() > 0) {
// 接口回调回传数据
// 把查询到的数据回传回去
onCallBackLisenter.onCallBack(beanList);
return;
}
//②取不到的数据的话,请求网络
OKHttpUtil.getInstance().get(URL, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//标识,如果回传数据为空,请求失败
onCallBackLisenter.onCallBack(null);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseString = response.body().string();
Gson gson = new Gson();
ResponseBean responseBean = gson.fromJson(responseString, ResponseBean.class);
List<ResponseBean.ResultsBean> results = responseBean.getResults();
//填充新数据集合,发挥给V层
List<HomeBean> homeBeanList = new ArrayList<>();
for (int i = 0; i < results.size(); i++) {
String desc = results.get(i).getDesc();
String url = results.get(i).getUrl();
HomeBean homeBean = new HomeBean();
homeBean.setImgUrl(url);
homeBean.setTitle(desc);
homeBeanList.add(homeBean);
}
onCallBackLisenter.onCallBack(homeBeanList);
//③把数据存数据库中
homeBeanDao.insertInTx(homeBeanList);
}
});
}
}
adapter
package com.bwei.a0902zhoukaomoni.ui.activity; import android.net.Uri; import android.support.annotation.Nullable; import com.bwei.a0902zhoukaomoni.R; import com.bwei.a0902zhoukaomoni.data.GreenBean; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; /** * Created by JackLee on 2018/9/2. */ class SubRecyclerAdapter extends BaseQuickAdapter<GreenBean,BaseViewHolder> { public SubRecyclerAdapter(int layoutResId, @Nullable List<GreenBean> data) { super(layoutResId, data); } @Override protected void convert(BaseViewHolder helper, GreenBean item) { helper.setText(R.id.tv_showInfo, item.getTitle()); //Fresco加载图片 SimpleDraweeView sdv_showIcon = helper.getView(R.id.sdv_showIcon); Uri uri = Uri.parse(item.getImageUrl()); sdv_showIcon.setImageURI(uri); } }