在总项目里导的依赖
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
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
}
还有在自己项目导的依赖
greendao{
schemaVersion 2 // 数据库版本号
daoPackage 'com.bwie.myweek1.model.db'//greenDao 自动生成的代码保存的包名
targetGenDir 'src/main/java' //自动生成的代码存储的路径,默认是 build/generated/source/greendao.
generateTests false //true的时候自动生成测试单元
targetGenDirTests 'src/main/java' //应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
}
implementation 'org.greenrobot:greendao:3.2.2'
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
添加的数据库需要添加注解如下
@Entity
public class GreenBean {
@Id()
Long id;
private int followMovie;
private String imageUrl;
private String name;
private int rank;
private long releaseTime;
private String releaseTimeShow;
private String summary;
下面写Util的app类
public class MyAppLication extends Application {
private DaoSession daoSession;
private static int MAX_MEM = 30 * ByteConstants.MB;
@Override
public void onCreate() {
super.onCreate();
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
.setMaxCacheSize(MAX_MEM)
.setBaseDirectoryPath(Environment.getExternalStorageDirectory())
.setBaseDirectoryName("immage_ok")
.build();
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this, imagePipelineConfig);
}
private void initGreenDao() {
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "text0.db");
SQLiteDatabase writableDatabase = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(writableDatabase);
daoSession = daoMaster.newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
GreenUtil类
public class GreenBeanUtils {
private final MyAppLication myAppLication;
private final DaoSession daoSession;
public GreenBeanUtils(Context context) {
myAppLication = (MyAppLication) context.getApplicationContext();
daoSession = myAppLication.getDaoSession();
}
public void insertData(GreenBean listBean){
DaoSession daoSession = myAppLication.getDaoSession();
daoSession.insertOrReplace(listBean);
}
public List<GreenBean> queryAll(){
List<GreenBean> listBeans = myAppLication.getDaoSession().loadAll(GreenBean.class);
for (GreenBean listBean : listBeans) {
Log.e("my",""+listBean.getName());
}
return listBeans;
}
}
在Activity中如何应用
@Override
public void onSuccess(final NewsBean newsBean) {
/*ArrayList<NewsBean.ResultBean> result = newsBean.getResult();*/
GreenBeanUtils greenBeanUtils = new GreenBeanUtils(this);
final List<NewsBean.ResultBean> result = newsBean.getResult();
for (NewsBean.ResultBean vv : result) {
GreenBean greenBean = new GreenBean();
greenBean.setFollowMovie(vv.getFollowMovie());
greenBean.setImageUrl(vv.getImageUrl());
greenBean.setName(vv.getName());
greenBean.setRank(vv.getRank());
greenBean.setReleaseTime(vv.getReleaseTime());
greenBean.setSummary(vv.getSummary());
greenBeanUtils.insertData(greenBean);
}
greenBeanUtils.queryAll();
activity类
public class MainActivity extends AppCompatActivity implements IMainView {
@BindView(R.id.xRecyclerView)
XRecyclerView xRecyclerView;
private MainPresenter mainPresenter;
private MyAdapter myAdapter;
private Unbinder bind;
private int net;
private GreenDaoUtils greenDaoUtils;
private List<GreenBean> greenBeans;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bind = ButterKnife.bind(this);
initView();
initData();
}
private void initView() {
greenDaoUtils = new GreenDaoUtils(this);
xRecyclerView.setPullRefreshEnabled(true);
xRecyclerView.setLoadingMoreEnabled(true);
xRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));
xRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
myAdapter = new MyAdapter(this);
mainPresenter = new MainPresenter();
net = RetrofitUtils.getNetype(this);
Log.d("myMessage", "net" + net);
if (net != -1) {
mainPresenter.loadNet();
mainPresenter.setView(this);
} else {
greenBeans = greenDaoUtils.queryAll();
if (greenBeans.size() == 0) {
Toast.makeText(this, "无缓存", Toast.LENGTH_SHORT).show();
} else {
getDb();
}
}
}
private void getDb() {
List<ShopBean.ResultBean> list = new ArrayList<>();
for (int i = 0; i < greenBeans.size(); i++) {
String name = greenBeans.get(i).getCommodityName();
String imageUrl = greenBeans.get(i).getMasterPic();
String releaseTimeShow = greenBeans.get(i).getPrice();
ShopBean.ResultBean resultBean = new ShopBean.ResultBean(name, imageUrl, releaseTimeShow);
list.add(resultBean);
}
myAdapter.setData(list);
myAdapter.notifyDataSetChanged();
}
//获取网络状态嘛 -1 没网 1 WIFI 2 手机网络
Log.d("myMessage", "net" + net);
if (net != -1) {
//有网展示数据
mainPresenter.loadNet();
mainPresenter.setView(this);
} else {
greenBeans = greenDaoUtils.queryAll();
if (greenBeans.size() == 0) {
//无网络无缓存
Toast.makeText(this, "无缓存", Toast.LENGTH_SHORT).show();
} else {
//查询数据库展示
getDb();
}
}
}
private void getDb() {
List<ShopBean.ResultBean> list = new ArrayList<>();
//循环遍历
for (int i = 0; i < greenBeans.size(); i++) {
String name = greenBeans.get(i).getCommodityName();
String imageUrl = greenBeans.get(i).getMasterPic();
String releaseTimeShow = greenBeans.get(i).getPrice();
ShopBean.ResultBean resultBean = new ShopBean.ResultBean(name, imageUrl, releaseTimeShow);
list.add(resultBean);
}
//设置适配器数据
myAdapter.setData(list);
myAdapter.notifyDataSetChanged();
}
private void initData() {
xRecyclerView.setAdapter(myAdapter);
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
if (net == -1) {
Toast.makeText(MainActivity.this, "无网络啊", Toast.LENGTH_SHORT).show();
} else {
mainPresenter.loadNet();
xRecyclerView.refreshComplete();
}
}
@Override
public void onLoadMore() {
if (net == -1) {
Toast.makeText(MainActivity.this, "无网络啊", Toast.LENGTH_SHORT).show();
} else {
handler.postDelayed(new Runnable() {
@Override
public void run() {
mainPresenter.loadNet();
xRecyclerView.loadMoreComplete();
}
}, 2000);
}
}
});
}
@Override
public void onSuccess(ShopBean shopBean) {
List<ShopBean.ResultBean> result = shopBean.getResult();
myAdapter.setData(result);
for (ShopBean.ResultBean vv : result) {
GreenBean greenBean = new GreenBean();
greenBean.setSaleNum(vv.getSaleNum());
greenBean.setPrice(vv.getPrice());
greenBean.setMasterPic(vv.getMasterPic());
greenBean.setCommodityName(vv.getCommodityName());
greenDaoUtils.insertData(greenBean);
}
greenDaoUtils.queryAll();
}
@Override
public void onFail(String msg) {
}
@Override
protected void onDestroy() {
super.onDestroy();
mainPresenter.detaChView();
bind.unbind();
}
Handler handler = new Handler();
}