xUtils的使用(二)

图片加载模块:

## DbUtils使用方法:
```Java
DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("wyouflf@qq.com");
user.setName("wyouflf");
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List<Parent> list = db.findAll(Parent.class);//通过类型查找
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));
// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));
// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class)
                                   .where("id" ,"<", 54)
                                   .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
                                   .orderBy("id")
                                   .limit(pageSize)
                                   .offset(pageSize * pageIndex));
// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));
DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));

List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
db.execNonQuery(sql) // 执行自定义sql

图片加载模块:

## BitmapUtils 使用方法
```java
BitmapUtils bitmapUtils = new BitmapUtils(this);
// 加载网络图片
bitmapUtils.display(testImageView, "http://bbs.lidroid.com/static/image/common/logo.png");
// 加载本地图片(路径以/开头, 绝对路径)
bitmapUtils.display(testImageView, "/sdcard/test.jpg");
// 加载assets中的图片(路径以assets开头)
bitmapUtils.display(testImageView, "assets/img/wallpaper.jpg");
// 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener));
 

图片加载实例:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class ImageActivity extends AppCompatActivity {  
  2.   
  3.     @ViewInject(value = R.id.img)  
  4.     private ImageView iv;  
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_image);  
  9.         x.view().inject(this);  
  10.     }  
  11.     @Event(value = {R.id.btn_load,R.id.btn_asset,R.id.btn_network})  
  12.     private void onClick(View view){  
  13.   
  14.         switch (view.getId()) {  
  15.             //加载assets中的图片  
  16.             case R.id.btn_asset:  
  17.                 ImageOptions options = new ImageOptions.Builder()  
  18.                         .setIgnoreGif(false)    //设置是否忽略gif格式的图片  
  19.                         .setLoadingDrawableId(R.mipmap.ic_launcher)    //设置加载过程中显示的图片  
  20.                         .setFailureDrawableId(R.mipmap.ic_launcher)    //设置加载失败时显示的图片  
  21.                         .setUseMemCache(true)      //设置是否使用缓存  
  22.                         .build();  
  23.                 x.image().bind(iv,"assets://cat.gif",options);  
  24.                 break;  
  25.             //加载存储的图片  
  26.             case R.id.btn_load:  
  27.                 options = new ImageOptions.Builder().setIgnoreGif(false)  
  28.                         .setLoadingDrawableId(R.mipmap.ic_launcher)  
  29.                         .setFailureDrawableId(R.mipmap.ic_launcher)  
  30.                         .setUseMemCache(true)  
  31.                         .build();  
  32.   
  33.                 x.image().bind(iv,new File("/sdcard/test.gif").toURI().toString(),options);  
  34.                 break;  
  35.             //加载网络图片  
  36.             case R.id.btn_network:  
  37.                 String url = "https://img-my.csdn.net/uploads/201407/26/1406382922_6166.jpg";  
  38.                 options = new ImageOptions.Builder().setLoadingDrawableId(R.mipmap.ic_launcher)  
  39.                         .setFailureDrawableId(R.mipmap.ic_launcher)  
  40. //                        .setCircular(true)  
  41.                          .setRadius(20)  
  42.                         .setFadeIn(true)  
  43.                         .setAutoRotate(true)  
  44.                         .setUseMemCache(true)  
  45.                         .build();  
  46.   
  47. //                x.image().bind(iv,url,options);  
  48.                 x.image().bind(iv, url, options, new Callback.CommonCallback<Drawable>() {  
  49.                     @Override  
  50.                     public void onSuccess(Drawable result) {  
  51.                         BitmapDrawable bd = (BitmapDrawable) result;  
  52.                         Bitmap bm = bd.getBitmap();  
  53.   
  54.                     }  
  55.                     @Override  
  56.                     public void onError(Throwable ex, boolean isOnCallback) {  
  57.   
  58.                     }  
  59.                     @Override  
  60.                     public void onCancelled(CancelledException cex) {  
  61.   
  62.                     }  
  63.                     @Override  
  64.                     public void onFinished() {  
  65.   
  66.                     }  
  67.                 });  
  68.                 break;  
  69.         }  
  70.     }  
  71. }  

数据库使用实例:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class DatabaseActivity extends AppCompatActivity {  
  2.   
  3.     @ViewInject(value = R.id.id_database_lv)  
  4.     private ListView lv;  
  5.   
  6.     private DbManager manager;  
  7.     private DbManager.DaoConfig config;  
  8.   
  9.     private List<PersonTable>list;  
  10.     private DatabaseAdapter adapter;  
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_database);  
  15.         x.view().inject(this);  
  16.   
  17.         config = DBUtils.getDaoConfig(this);  
  18.         //实例化数据库管理器对象  
  19.         manager = x.getDb(config);  
  20.         list = new ArrayList<>();  
  21.         if (queryAll()!=null){  
  22.             list.addAll(queryAll());  
  23.         }  
  24.         adapter = new DatabaseAdapter(list,this);  
  25.         lv.setAdapter(adapter);  
  26.   
  27.     }  
  28.     /** 
  29.      * @des 获取数据库的person表当中的全部内容 
  30.      * 
  31.      * */  
  32.     public List<PersonTable> queryAll(){  
  33.         try {  
  34.             List<PersonTable>list = manager.findAll(PersonTable.class);  
  35.             return list;  
  36.         } catch (DbException e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.         return  null;  
  40.     }  
  41.   
  42.     /** 
  43.      * 插入数据的方法 
  44.      * */  
  45.     public void insertData(PersonTable person){  
  46.         try {  
  47.             manager.save(person);  
  48. //            list = queryAll();  
  49. //            adapter.notifyDataSetChanged();  
  50.         } catch (DbException e) {  
  51.             e.printStackTrace();  
  52.         }  
  53.     }  
  54.     /** 
  55.      * 更新数据的方法 
  56.      * */  
  57.     public void updataData(int id){  
  58.         PersonTable person;  
  59.         try {  
  60.             person = manager.findById(PersonTable.class,id);  
  61.             person.setName("狗丹");  
  62.             manager.update(person,"name");  
  63.         } catch (DbException e) {  
  64.             e.printStackTrace();  
  65.         }  
  66.   
  67.     }  
  68.     @Event(value = {R.id.id_insert_btn,R.id.id_update_btn,R.id.id_delete_btn})  
  69.     private void onClick(View view){  
  70.         switch (view.getId()) {  
  71.             case R.id.id_insert_btn:  
  72.                 Toast.makeText(DatabaseActivity.this,"点击了插入",Toast.LENGTH_LONG).show();  
  73.                 insertData(new PersonTable(1,"cindy",23,"女",4500));  
  74.                 insertData(new PersonTable(2,"tom",24,"男",8500));  
  75.                 insertData(new PersonTable(3,"jack",25,"男",10000));  
  76.                 insertData(new PersonTable(4,"rose",26,"女",9500));  
  77.                 insertData(new PersonTable(6,"张三",25,"男",10000));  
  78.                 insertData(new PersonTable(7,"狗剩",26,"女",9500));  
  79.                 list.clear();  
  80.                 list.addAll(queryAll());  
  81.                 adapter.notifyDataSetChanged();  
  82.                 break;  
  83.   
  84.             case R.id.id_update_btn:  
  85.                 updataData(6);  
  86.                 list.clear();  
  87.                 list.addAll(queryAll());  
  88.                 adapter.notifyDataSetChanged();  
  89.                 break;  
  90.             case R.id.id_delete_btn:  
  91.   
  92.                 //根据id做删除  
  93.                 try {  
  94.                     //删除指定的对象  
  95.                     manager.deleteById(PersonTable.class,6);  
  96.                     PersonTable person = manager.selector(PersonTable.class).where("age","=","25").findFirst();  
  97.                     manager.delete(person);  
  98.                     //删除指定的条件的对象  
  99.                     manager.delete(PersonTable.class, WhereBuilder.b("age",">","24").and("sex","=","女"));  
  100.                 } catch (DbException e) {  
  101.                     e.printStackTrace();  
  102.                 }  
  103.   
  104.                 list.clear();  
  105.                 list.addAll(queryAll());  
  106.                 adapter.notifyDataSetChanged();  
  107.                 break;  
  108.         }  
  109.     }  
  110. }  
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. * 数据库形成表的注意事项:  
  2.  * 1.在类名之上加入@Table(name = "person")标签,表示当前的类会被创建成表,name属性之后  
  3.  * 对应的值表示表的名称  
  4.  * 2.类当中的属性需要在上面加入@Column(name = " ")标签,然后name对应的值就代表了数据库当中的表的名称。  
  5.  * 3.类当中一定有一个属性作为主键,否则表不会创建成功,autoGen代表了主键的数字是否是自增长的,  
  6.  * 如果不写,默认自增长  
  7.  */  
  8. @Table(name = "person")  
  9. public class PersonTable {  
  10.     @Column(name = "id", isId = true, autoGen = true)  
  11.     private int id;  
  12.     @Column(name = "name")  
  13.     private String name;  
  14.     @Column(name = "age")  
  15.     private int age;  
  16.     @Column(name = "sex")  
  17.     private String sex;  
  18.     @Column(name = "salary")  
  19.     private double salary;  
  20.   
  21.     public int getId() {  
  22.         return id;  
  23.     }  
  24.   
  25.     public void setId(int id) {  
  26.         this.id = id;  
  27.     }  
  28.   
  29.     public String getName() {  
  30.         return name;  
  31.     }  
  32.   
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.   
  37.     public int getAge() {  
  38.         return age;  
  39.     }  
  40.   
  41.     public void setAge(int age) {  
  42.         this.age = age;  
  43.     }  
  44.   
  45.     public String getSex() {  
  46.         return sex;  
  47.     }  
  48.   
  49.     public void setSex(String sex) {  
  50.         this.sex = sex;  
  51.     }  
  52.   
  53.     public double getSalary() {  
  54.         return salary;  
  55.     }  
  56.   
  57.     public void setSalary(double salary) {  
  58.         this.salary = salary;  
  59.     }  
  60.   
  61.     public PersonTable(int id, String name, int age, String sex, double salary) {  
  62.         this.id = id;  
  63.         this.name = name;  
  64.         this.age = age;  
  65.         this.sex = sex;  
  66.         this.salary = salary;  
  67.     }  
  68.   
  69.     public PersonTable() {  
  70.     }  
  71. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值