greendao3.0简单实现

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

 

				}

 

			});
 
	}
}
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值