第一步导依赖吧(网络读写权限加一下)
//导入GreenDao依赖
implementation 'org.greenrobot:greendao:3.2.2'
再在android下添加配置
//添加GreenDao的配置
greendao {
schemaVersion 1//数据库版本号,必须依次增大,用来判断数据库版本,是否需要更新
daoPackage 'com.bawei.shopping_trolley.greendao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'// 设置DaoMaster、DaoSession、Dao目录
}
同页面顶端加
apply plugin: 'org.greenrobot.greendao'
再在项目的根build.gradle下的dependencies添加
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'//必须加
接着呢要写一个bean类 来生成greenDao库此Bean类要和你解析的类里对象相同 也可以复用解析的类 在bean里添加两个注解
@Entity //类上面要加的注解
public class listbean {
@Id //要加的注解 里面还有(autoincrement = true)方法 目的是主键自增
private long id;//自己定义一个long类型的id 必须是long类型
private int pid;
private double bargainPrice;
private String createtime;
private String detailUrl;
接着setget方法 锤子锤一下
}
这时候准备工作是做好了该用它了 用的时候首先得初始化它
private void initDao() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this,"green");
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
mUserDao = daoSession.getListbeanDao(); //提成全局
}
然后做网络判断 如果有网的话 让它加载数据的同时 再存库
@Override
public void CallBackListBean(List<listbean> listbean) {
for (int i = 0; i< listbean.size(); i++){
listbean listbe = listbean.get(i);
//listbean是我请求回来的集合 遍历存库
listbe.setBargainPrice(listbe.getBargainPrice());
listbe.setTitle(listbe.getTitle());
listbe.setNum(listbe.getNum());
listbe.setDetailUrl(listbe.getDetailUrl());
listbe.setPrice(listbe.getPrice());
listbe.setId(i);//id是我自己添加 在这里给id赋值 取库时候要用
mUserDao.insertOrReplace(listbe);
String string = mUserDao.getDatabase().toString();
Log.i("CCCC", "onClick: " + listbe.getTitle().toString()+"==="+string);
}
}
});
没网的时候要走没网的方法 也就是去取库展示缓存好的数据
//没网状态下查询
private void noNet() {
QueryBuilder builder = mUserDao.queryBuilder();
List<Object> list = builder.orderAsc(listbeanDao.Properties.Id)
.list();
ArrayList<listbean> listbeans = new ArrayList<>();
for (Object o : list){
if ( o instanceof listbean){
String title = ((listbean) o).getTitle();
String detailUrl = ((listbean) o).getDetailUrl();
double price = ((listbean) o).getPrice();
int num = ((listbean) o).getNum();
int pid = ((listbean) o).getPid();
listbean dao = new listbean();
dao.setNum(num);
dao.setTitle(title);
dao.setDetailUrl(detailUrl);
dao.setPid(pid);
dao.setPrice(price);
listbeans.add(dao);
}
}
CommodityAdapter adapter = new CommodityAdapter(MainActivity.this, listbeans);
recyclerview.setAdapter(adapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 1);
recyclerview.setLayoutManager(gridLayoutManager);
}