工程里边
buildscript {
repositories {
jcenter()
mavenCentral() // add repository
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
项目里边
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
//写到defaultConfig {
greendao {
schemaVersion 1//数据库版本号
//daoPackage 'com.example.demo1是自己的包名 后边不用删掉
daoPackage 'com.example.demo1.greendao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
依赖
dependencies {
implementation 'org.greenrobot:greendao:3.2.2' // add library
}
到这步同步一下studio
创建一个Bean 此实体类专门要存放数据库的对象
package com.example.demo4.Bean;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;
/**
* @Auther: luck
* @Date: 2019/3/18 18:42:40
* @Description:
*/
@Entity
public class User {
@Id
String title;
String image;
@Generated(hash = 993849810)
public User(String title, String image) {
this.title = title;
this.image = image;
}
@Generated(hash = 586692638)
public User() {
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return this.image;
}
public void setImage(String image) {
this.image = image;
}
}
到这步再同步一下studio 会自动添加三个类
然后在Activity里增删改查
创建App全局类
package com.example.demo1;
import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
import com.example.demo1.greendao.DaoMaster;
import com.example.demo1.greendao.DaoSession;
import com.facebook.drawee.backends.pipeline.Fresco;
/**
* @Auther: luck
* @Date: 2019/3/15 18:17:43
* @Description:
*/
public class App extends Application {
private static DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
//这Fresco图片加载框架
Fresco.initialize(this);
//参数1:上下文
//参数2:数据库名称
//参数3:游标工厂类
DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "alex", null);
//获取DataBase对象
SQLiteDatabase db = openHelper.getWritableDatabase();
//创建DaoMaster对象,所需DateBase数据库对象
DaoMaster daoMaster = new DaoMaster(db);
//创建DaoSession对象
daoSession = daoMaster.newSession();
}
public static DaoSession getDaoSession() {
return daoSession;
}
}
package com.android.alex.greendao_demo.ui.activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.alex.greendao_demo.R;
import com.android.alex.greendao_demo.data.User;
import com.android.alex.greendao_demo.gen.UserDao;
import com.android.alex.greendao_demo.ui.App;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.btn_add)
Button btnAdd;
@BindView(R.id.btn_query)
Button btnQuery;
@BindView(R.id.tv_content)
TextView tvContent;
@BindView(R.id.btn_delete)
Button btnDelete;
@BindView(R.id.btn_update)
Button btnUpdate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@OnClick({R.id.btn_add, R.id.btn_delete, R.id.btn_update, R.id.btn_query})
public void onViewClicked(View view) {
UserDao userDao = App.getDaoSession().getUserDao();
switch (view.getId()) {
case R.id.btn_add:
//增加数据
for (int i = 0; i < 10; i++) {
//user是自己建的是实体类
User user = new User();
user.setName("司马" + i);
userDao.insertOrReplace(user);
}
break;
case R.id.btn_delete:
//删除数据
userDao.deleteByKey((long) 1);
break;
case R.id.btn_update:
User cusomter = new User();
cusomter.setId((long) 1);
cusomter.setName("疾风剑豪");
User stundent = new User();
stundent.setId((long) 10);
stundent.setName("Tom");
User users[] = new User[]{cusomter,stundent};
//userDao.update(cusomter);
userDao.updateInTx(users);
break;
case R.id.btn_query:
User user = userDao.load((long) 1);
String userInfo = user.toString();
tvContent.setText(userInfo);
/*List<User> userList = userDao.loadAll();
//借助一个字符串缓冲区
StringBuilder sb = new StringBuilder();
//遍历循环获取所有内容
for (int i = 0; i < userList.size(); i++) {
User user = userList.get(i);
String userInfo = user.toString();
sb.append(userInfo + "---");
}
//查询到的所有数据设置给TextView进行显示
String queryAllInfo = sb.toString();
tvContent.setText(queryAllInfo);*/
break;
}
}
}
*/
public class Net {
public static boolean hasNetwork(Context context){
//创建连接管理器
ConnectivityManager cm= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获得最新流动状态
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
}
}
Activity有网无网数据库代码
package com.example.luck.zz_zk2019318;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import com.example.luck.zz_zk2019318.Adapter.MyAdapter;
import com.example.luck.zz_zk2019318.Bean.BannerBean;
import com.example.luck.zz_zk2019318.Bean.ShowBean;
import com.example.luck.zz_zk2019318.Bean.User;
import com.example.luck.zz_zk2019318.Presenter.Presenter;
import com.example.luck.zz_zk2019318.Utils.Net;
import com.example.luck.zz_zk2019318.greendao.UserDao;
import com.google.gson.Gson;
import com.recker.flybanner.FlyBanner;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements com.example.luck.zz_zk2019318.View.View {
private Presenter presenter;
private FlyBanner flyBanner;
private String imageUrl;
private RecyclerView recyclerView;
private UserDao userDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化Dao包
userDao = App.getDaoDession().getUserDao();
//flybanner控件
flyBanner = findViewById(R.id.flyBanner);
recyclerView = findViewById(R.id.recyclerView);
//实例化p层
presenter = new Presenter(this);
//p层轮播图方法
presenter.getBanner();
//p关联 内存泄漏
presenter.onAcctch(this);
//网络判断
boolean b = Net.HasWork(this);
//有网拿到p层展示方法
if (b){
presenter.getShow();
}else {
//没网查询适配器
List<User> users = userDao.loadAll();
//判断查询为空的话吐司
if (users.size()==0){
//做一个吐司的操作都行
}else {
//新建一个集合 此集合和你的解析的实体类一个泛型
List<ShowBean.ResultBean> data = new ArrayList<>();
//遍历得到每一个title image
for (int i = 0; i <users.size() ; i++) {
String title = users.get(i).getTitle();
String image = users.get(i).getImage();
//实力话解析那个实体类 把得到的title image设置给解析的实体类做展示
ShowBean.ResultBean bean = new ShowBean.ResultBean();
bean.setName(title);
bean.setImageUrl(image);
//将这个解析的实体类添加到新建的集合中
data.add(bean);
}
//设置给Adapter
MyAdapter myAdapter = new MyAdapter(MainActivity.this,data);
GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(myAdapter);
}
}
}
@Override
//这是获取flyBanner的数据方法
public void getBannnerdata(final String data) {
//
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(data, BannerBean.class);
List<BannerBean.ResultBean> result = bannerBean.getResult();
List<String> uu=new ArrayList<>();
for (int i = 0; i <3; i++) {
imageUrl = result.get(i).getImageUrl();
uu.add(imageUrl);
}
Toast.makeText(MainActivity.this,imageUrl+"",Toast.LENGTH_SHORT).show();
flyBanner.setImagesUrl(uu);
}
});
}
//这是获取展示的数据方法
@Override
public void getShowdata(final String data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//解析
Gson gson = new Gson();
ShowBean showBean = gson.fromJson(data, ShowBean.class);
List<ShowBean.ResultBean> result = showBean.getResult();
//再添加之前先清空数据库
userDao.deleteAll();
//遍历拿到所有解析出来的imageUrl name;
for (int i = 0; i <result.size() ; i++) {
String imageUrl = result.get(i).getImageUrl();
String name = result.get(i).getName();
//在这实例化自己建的User
User user = new User();
user.setImage(imageUrl);//把值设置给user
user.setTitle(name);//把值设置给user
userDao.insert(user); //将这个user添加到数据库
}
MyAdapter myAdapter = new MyAdapter(MainActivity.this,result);
GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(myAdapter);
myAdapter.setOngetToas(new MyAdapter.OngetToas() {
@Override
public void getdata(String name) {
Toast.makeText(MainActivity.this,name+"",Toast.LENGTH_SHORT).show();
}
});
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.Ondettch();
}
}