//建表
package com.bawei.xutils3.bean; import org.xutils.db.annotation.Column; import org.xutils.db.annotation.Table; /** * 1. 类的用途 数据库表跟实体类对象进行关联 * 2. @author forever * 3. @date 2017/3/9 15:10 * onCreated 当第一次创建表的时候执行sql语句 */ @Table(name = "Student", onCreated = "") public class Student { /** * name = "id",表中的一个字段 * isId = true,是否是主键 * autoGen = true, 是否自增长 * property = "NOT NULL" 添加约束 */ @Column(name = "id", isId = true, autoGen = true, property = "NOT NULL") private int id; @Column(name = "name") private String name; //无参构造方法如果不添加的话 数据库表创建不成功 public Student() { } public Student(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
//业务功能
package com.bawei.xutils3.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.bawei.xutils3.R; import com.bawei.xutils3.app.MyApplication; import com.bawei.xutils3.bean.Student; import org.xutils.DbManager; import org.xutils.common.Callback; import org.xutils.db.sqlite.WhereBuilder; import org.xutils.ex.DbException; import org.xutils.http.RequestParams; import org.xutils.image.ImageOptions; import org.xutils.view.annotation.ContentView; import org.xutils.view.annotation.Event; import org.xutils.view.annotation.ViewInject; import org.xutils.x; import java.util.ArrayList; import java.util.List; /** * 注解的方式加载布局 */ @ContentView(R.layout.activity_main) public class MainActivity extends AppCompatActivity { @ViewInject(R.id.tv) TextView tv; @ViewInject(R.id.iv) ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); /** * 初始化注解 */ x.view().inject(this); tv.setText("这是我使用xutils3的注解方式"); } /** * 1,方法必须私有限定, * 2,方法参数形式必须和type对应的Listener接口一致. * 3,注解参数value支持数组: value={id1, id2, id3} * type默认View.OnClickListener.class,故此处可以简化不写,@Event(R.id.bt_main) * 默认的是单击事件 */ // @Event(type = View.OnClickListener.class, value = R.id.tv) @Event({R.id.tv, R.id.iv, R.id.bt_add, R.id.bt_find, R.id.bt_update, R.id.bt_delete}) private void testOnClick(View view) { DbManager db = new MyApplication().getDb(); switch (view.getId()) { case R.id.tv: Toast.makeText(MainActivity.this, "这是我使用注解方式实现点击事件", Toast.LENGTH_SHORT).show(); getData(); break; case R.id.iv: Toast.makeText(MainActivity.this, "这是我使用注解方式实现点击事件", Toast.LENGTH_SHORT).show(); getServerData(); //通过ImageOptions.Builder().set方法设置图片的属性 ImageOptions options = new ImageOptions.Builder().setCircular(true).setCrop(true).setSize(100, 100).setLoadingDrawableId(R.mipmap.ic_launcher).build(); x.image().bind(iv, "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1489035859303&di=a701b850fecd73173a020305d46eec77&imgtype=0&src=http://b.hiphotos.baidu.com/zhidao/pic/item/1f178a82b9014a90e7eb9d17ac773912b21bee47.jpg", options); break; case R.id.bt_add: //插入 Toast.makeText(MainActivity.this, "保存数据", Toast.LENGTH_SHORT).show(); List<Student> students = new ArrayList<>(); students.add(new Student("zhangsan")); students.add(new Student("lisi")); students.add(new Student("wangwu")); students.add(new Student("zhaoliu")); try { db.save(students); Toast.makeText(MainActivity.this, "保存数据成功", Toast.LENGTH_SHORT).show(); } catch (DbException e) { e.printStackTrace(); } break; case R.id.bt_find: try { Student student = db.findFirst(Student.class); Log.i("xxx", student.toString()); List<Student> studentList = db.findAll(Student.class); for (Student student1 : studentList) { Log.i("xxx", student1.toString()); } } catch (DbException e) { e.printStackTrace(); } break; case R.id.bt_update: try { //第一种方式 更新第一个对象的名字 Student student = db.findFirst(Student.class); /* student.setName("wowo"); db.update(student, "name");*/ //第二种方式 /* WhereBuilder b = WhereBuilder.b(); b.and("id", "=", student.getId()); KeyValue value = new KeyValue("name", "sisi"); db.update(Student.class, b, value);*/ //第三种方式 student.setName("xixi"); db.saveOrUpdate(student); Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show(); } catch (DbException e) { e.printStackTrace(); } break; case R.id.bt_delete: try { //删除表中的所有数据 // db.delete(Student.class); //根据条件删除表中的数据 WhereBuilder b = WhereBuilder.b(); b.and("id", ">", "5"); b.and("id", "<", "8"); db.delete(Student.class, b); Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show(); } catch (DbException e) { e.printStackTrace(); } break; } } /** * 长按事件 * * @param v * @return */ @Event(type = View.OnLongClickListener.class, value = R.id.iv) private boolean testOnLongClick(View v) { switch (v.getId()) { case R.id.iv: Toast.makeText(MainActivity.this, "这是我使用注解方式实现长按事件", Toast.LENGTH_SHORT).show(); postData(); break; } return true; } //post请求方式 private void postData() { String url = "http://www.93.gov.cn/93app/data.do"; RequestParams params = new RequestParams(url); params.addBodyParameter("channelId", "0"); params.addParameter("startNum", "0"); params.addHeader("head", "android"); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Log.i("xxx", result); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } //get请求方式 获取网络数据 缓存 private void getData() { String url = "http://www.93.gov.cn/93app/data.do"; RequestParams params = new RequestParams(url); params.addQueryStringParameter("channelId", "0"); params.addQueryStringParameter("startNum", "0"); params.setCacheMaxAge(1000 * 60); x.http().get(params, new Callback.CacheCallback<String>() { private String result = null; @Override public boolean onCache(String result) { this.result = result; //默认false不走缓存 true 走缓存 过期之后就不走缓存 Toast.makeText(MainActivity.this, "走缓存", Toast.LENGTH_SHORT).show(); return true; } @Override public void onSuccess(String result) { if (result != null) { this.result = result; } Log.i("aaa", result); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } //get请求方式 获取网络数据 private void getServerData() { String url = "http://www.93.gov.cn/93app/data.do"; RequestParams params = new RequestParams(url); params.addQueryStringParameter("channelId", "0"); params.addQueryStringParameter("startNum", "0"); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Log.i("xxx", result); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } }