开始Fresco的依赖
implementation 'com.facebook.fresco:fresco:0.12.0'
首先GeenDao的依赖
implementation 'org.greenrobot:greendao:3.2.2'
1:在项目的build.grade文件里加入一行代码
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
2:在app的build.grade里面加上代码
apply plugin: 'org.greenrobot.greendao'
3:在app的build.grad里面Android{}里加上代码
greendao {
schemaVersion 1
//这里需要修改生产dao的包名
daoPackage 'com.bawei.dome.gen'
targetGenDir 'src/main/java'
}
4:写一个外部类的greendao
public class GreenDaoManager {
private static GreenDaoManager instance;
private DaoMaster.DevOpenHelper devOpenHelper;
private SQLiteDatabase db;
private DaoMaster daoMaster;
private DaoSession daoSession;
private GreenDaoManager(){
}
public static GreenDaoManager getInstance(){
if (instance==null){
synchronized (GreenDaoManager.class){
if (instance==null){
instance = new GreenDaoManager();
}
}
}
return instance;
}
public void setDataBase(Context context){
devOpenHelper = new DaoMaster.DevOpenHelper(context, "yang-db", null);
db = devOpenHelper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
public SQLiteDatabase getDb() {
return db;
}
public DaoSession getDaoSession() {
return daoSession;
}
}
5:在App里面实现greendao
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
GreenDaoManager.getInstance().setDataBase(this);
//设置磁盘缓存
DiskCacheConfig cacheConfig = DiskCacheConfig.newBuilder(this)
.setBaseDirectoryName("fimages")
.setBaseDirectoryPath(Environment.getExternalStorageDirectory())
.build();
//设置磁盘缓存的配置,生成配置文件
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(cacheConfig)
.build();
Fresco.initialize(this,config);
}
private static int MAX_MEM = 30* ByteConstants.MB;
private ImagePipelineConfig getConfigureCaches(Context context) {
final MemoryCacheParams bitmapCacheParams = new MemoryCacheParams(
// 内存缓存中总图片的最大大小,以字节为单位。
MAX_MEM,
// 内存缓存中图片的最大数量。
Integer.MAX_VALUE,
// 内存缓存中准备清除但尚未被删除的总图片的最大大小,以字节为单位。
MAX_MEM,
// 内存缓存中准备清除的总图片的最大数量。
Integer.MAX_VALUE,
// 内存缓存中单个图片的最大大小。
Integer.MAX_VALUE);
Supplier<MemoryCacheParams> mSupplierMemoryCacheParams = new Supplier<MemoryCacheParams>() {
@Override
public MemoryCacheParams get() {
return bitmapCacheParams;
}
};
ImagePipelineConfig.Builder builder = ImagePipelineConfig.newBuilder(context);
builder.setBitmapMemoryCacheParamsSupplier(mSupplierMemoryCacheParams);
return builder.build();
}
private void frescoInit() {
Fresco.initialize(this, getConfigureCaches(this));
Fresco.initialize(this);
}
}
6:在Activity中调用Greendao
//设置分割线
recycerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
recycerview.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL));
在onActivityCreat中调取数据库
resultBeanDao = GreenDaoManager.getInstance().getDaoSession().getResultBeanDao();
//判断有网没网加载数据
private void initinsert() {
boolean netWork = NetWorkUtils.getNetWork(MainActivity.this);
if (netWork){
resultBeanDao.deleteAll();
present1.getDataPresent(page,count);
}else {
List<ResultBean> resultBeans = resultBeanDao.loadAll();
DataAdpater dataAdpater = new DataAdpater(this, resultBeans);
rec.setAdapter(dataAdpater);
}
}
请求数据
@Override
public void getDataView(List<ResultBean> databean) {
for (int i=0;i<databean.size();i++){
ResultBean resultBean = databean.get(i);
resultBeanDao.insert(resultBean);
}
DataAdpater dataAdpater = new DataAdpater(this, databean);
rec.setAdapter(dataAdpater);
}