greendao3.0简单实现

来源:互联网 发布:mac win8 无声音 编辑:程序博客网 时间:2024/06/07 18:15

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);

}
});
}
}

原创粉丝点击