1、首先在build.gradle中建立greendao仓库
dependencies{
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
}
2、然后在build.gradle(app)中添加依赖
apply plugin: 'org.greenrobot.greendao'
greendao { schemaVersion 1 daoPackage 'com.it.xzr.homedoctorprotocol.gen'(要与项目中的包名一致,gen目录自动生成) targetGenDir 'src/main/java' }(写在android{...}后面)
然后在dependencied{
compile 'org.greenrobot:greendao:3.2.2'
}
3、在entity包中建一个列表的Item实体类
类方法上面标注注解@Entity,类方法里面
@Id Long id;然后是各字段,下面构造方法和get(), set()方法运行之后自动生成。
界面Content实体类相同。
4、具体用法:
(1)获取本地数据库相应的数据,初始化在界面上
private void initDataFromNative(){
Dao类 dao =GreenDaoManager.getInstance().getSession().getDao类();
Content(实体类) item = dao.queryBuilder().where(Dao类.Properties.Id.eq(getIntent().getLongExtra("contentId",0)))
.orderAsc(Dao类.Properties.Id)
.build().unique();
if(item != null){
xxx.setText(item.get字段);(EditText)
if(!"".equals(item.get时间)){
String[] times = item.get时间().split("-");
年.setText(times[0]);
月.setText(times[1]);
日.setText(times[2]);
} (获取日期)
if(!"".equals(item.get图片路径)){
Bitmap bitmap = BitmapFactory.decodeFile(item.get图片路径());
字段.setImageBitmap(bitmap);
字段.setVisibility(View.VISIBLE);
字段.setVisibility(View.GONE);
} (获取替换的图片)
if("true".equals(item.get字段()))
xxx.setChecked(true);
else if("false".equals(item.get字段()))
xxx.setChecked(false); (Checked)
if(!"".equals(item.get字段())){
Glide.with(本类.this)
.load(new File(item.get字段()))
.into(xxx);
} (获取图片)
}
}
(2)获取界面数据,保存到本地数据库
private void saveDataToNative(){
Dao类 dao = GreenDaoManager.getInstance().getSession().getDao类();
Content类 item = new Content类();
item.set字段(xxx.get字段());
item.set字段(new SimpleDateFormat("yyyy-MM-dd").format(new Data(System.currentTimeMillis())));
item.set字段(xxx.getText().toString());
if(!TextUtils.isEmpty(xx年.getText().toString()))
item.set字段(xx年.getText().toString()+"-"+xx月.getText().toString()+"-"+xx日.getText().toString());
item.set图片路径(xxx);
item.set字段(xxx.isChecked()+"");
long insert = dao.insert(item);
if(insert > 0){
Toast.makeText(this,"本地保存成功",Toast.LENGTH_SHORT).show();
Intent intent = new Intent().putExtra("openActivity","本类名");
setResult(1,intent);
finish();
}
}
(3)、保存信息到服务器
private void saveDataToRemote(){
final Dao类 dao = GreenDaoManager.getInstance().getSession().getDao类();
final Content类 item = dao.queryBuilder.where(Dao类.Properties.Id.eq(getIntent().getLongExtra("contentId",0)))
.orderAsc(Dao类.Properties.Id)
.build().unique();
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("后台字段",item.get字段());
jsonObject.addProperty("",GreenDaoManager.getInstance().getSession().getLoginUserDao().queryBuilder().build().unique().getAccount());
if(xxx.isChecked())
jsonObject.addProperty("",1);
else
jsonObject.addProperty("",0);
JsonObject jsonObjectFinal = new JsonObject();
jsonObjectFinal.add("jsonString",jsonObject);
HttpRequest.getInstance().postRequest(HttpUrl.XXX_XXX_XXX,jsonObjectFinal.toString(),new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
if(msg.arg1==-1){
Toast.makeText(HomeDoctorDoProtocolActivity.this, "服务器水逆了...", Toast.LENGTH_SHORT).show(); System.out.println("***** " + (String) msg.obj);
}else if(msg.arg1==1){
try { JSONObject jsonObject = new JSONObject((String) msg.obj); if (jsonObject.getInt("code") == 1) { item.setIsSubmitRemote(true); dao.update(item); Toast.makeText(HomeDoctorDoProtocolActivity.this, "上传成功", Toast.LENGTH_SHORT).show(); Intent intent = new Intent().putExtra("openActivity", "HomeDoctorDoProtocolActivity"); setResult(1, intent); finish(); } } catch (JSONException e) { e.printStackTrace(); }
}
System.out.println("remote save " + (String) msg.obj);
}
});
}
}