XUtils 3 框架 介绍
来源:互联网 发布:狄山 知乎 编辑:程序博客网 时间:2024/04/28 13:21
随着XUtils3(以下简称”X3”)的发布,修复了众多Bug、代码重构以及Android5.0版本以上的兼容等,
X3虽然不是说最好最火,但也得到了相当一部分人的喜爱。看到了GitHub上的X3功能介绍和sample
里面的代码,对于经常使用框架的人来说是比较容易理解和快速投入使用的,但对于一些新手来说就
很头疼了,这里就简单的介绍下X3的基本用法,在文章最后有XUtils3的jar包。注:部分代码引入的
github上的X3中sample内代码
转载请注明出处:http://blog.csdn.net/wx_anonymity/article/details/50930109
//注意:在使用XUtils3框架时,记得自定义一个myApplication类继承Application,覆写onCreate方法 // 在application的onCreate中初始化,否则运行时会提示没有合适的权限 @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(true); // 是否输出debug日志 } //进入正题//异步加载网络图片,在自定义Adapter内写入如下代码import org.xutils.x;public class XUtils3ImageAdapter extends BaseAdapter { private List<String> lists; private LayoutInflater inflater; private Context context; private ImageOptions imageOptions; public XUtils3ImageAdapter(List<String> lists, Context context) { this.lists = lists; this.context = context; inflater = LayoutInflater.from(this.context); } @Override public int getCount() { // TODO Auto-generated method stub return lists.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return lists.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder vh = null; if (convertView == null) { vh = new ViewHolder(); convertView = inflater.inflate(R.layout.item_lv, null); vh.imageView = (ImageView) convertView.findViewById(R.id.test_iv); imageOptions = new ImageOptions.Builder() // 设置图片尺寸 .setSize(DensityUtil.dip2px(300), DensityUtil.dip2px(300)) // 设置圆角(图片以矩形展示,设置四角的弧度) .setRadius(DensityUtil.dip2px(15)) // 如果ImageView的大小不是定义为wrap_content, 不要crop. .setCrop(true) // 很多时候设置了合适的scaleType也不需要它. // 加载中或错误图片的ScaleType // .setPlaceholderScaleType(ImageView.ScaleType.MATRIX) .setImageScaleType(ImageView.ScaleType.CENTER_CROP) .setLoadingDrawableId(R.drawable.ic_launcher) .setFailureDrawableId(R.drawable.ic_launcher).build(); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } x.image().bind(vh.imageView, lists.get(position), imageOptions); return convertView; } //自定义Adapter的内部类,ViewHolder,这个没什么好说的了,地球人都知道 class ViewHolder { ImageView imageView; }//之后在主界面MainActivity onCreate方法内写入List<String> lists_goodsImage = new ArrayList<String>(); lists_goodsImage.add("http://pic54.nipic.com/file/20141204/19902974_135858226000_2.jpg"); lists_goodsImage.add("http://pic54.nipic.com/file/20141204/19902974_135858226000_2.jpg"); lists_goodsImage.add("http://pic54.nipic.com/file/20141204/19902974_135858226000_2.jpg");
之后写一个给ListView,然后设置上述,也就是你自定义的Adapter就可以了,布局文件就一个LinearLayout里面放一个listview,然后再写一个布局文件作为item
网络请求
//这个真的是再简单不过了,直接上代码吧 //直接调用这个方法就可以了private void testHttp(String username, String password,String url) { // TODO Auto-generated method stub RequestParams params = new RequestParams(url); params.addBodyParameter("username", username); params.addBodyParameter("password", password); x.http().get(params, new CommonCallback<String>() { @Override public void onCancelled(CancelledException arg0) { // TODO Auto-generated method stub } @Override public void onError(Throwable arg0, boolean arg1) { // TODO Auto-generated method stub } @Override public void onFinished() { // TODO Auto-generated method stub } @Override public void onSuccess(String arg0) { // TODO Auto-generated method stub String result_data = arg0; Log.i("get_data", result_data); } }); }
数据库CURD
//首先,配置DaoConfigDbManager.DaoConfig daoConfig = new DbManager.DaoConfig() .setDbName("test.db") // 不设置dbDir时, 默认存储在app的私有目录. // .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, // 先这样写了. .setDbVersion(2) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { // 开启WAL, 对写入加速提升巨大 db.getDatabase().enableWriteAheadLogging(); } }).setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { // 此为更新数据库版本时可以做的操作,这里暂不介绍 // db.addColumn(...); // db.dropTable(...); // ... // or // db.dropDb(); } }); //之后得到DBManger DbManager db = x.getDb(daoConfig); List<DBTest> parentList = new ArrayList<DBTest>(); try { //增 for (int i = 0; i < 5; i++) { //自定义bean类 DBTest parent = new DBTest(); parent.setAdmin(true); parent.setDate(new java.sql.Date(1234)); parent.setTime(new Date()); parent.setEmail(i + "_@qq.com"); parentList.add(parent); db.save(parent); } //查 DBTest db_temp = db.selector(DBTest.class) .where("email", "=", "lololo").limit(4000).findFirst(); //删 db.delete(DBTest.class, WhereBuilder.b("email", "=", "lololo")); //改 WhereBuilder wb = WhereBuilder.b("email", "=", "169_@qq.com"); KeyValue kv = new KeyValue("email", "lololo"); db.update(DBTest.class,wb,kv); } catch (DbException e) { // TODO Auto-generated catch block e.printStackTrace(); } //功能代码实现了之后,再创建一个JavaBean类来get、set属性值,这里的注解用的是X3, //就不一一讲述了,详细的可以自己试一下import org.xutils.db.annotation.Column;import org.xutils.db.annotation.Table;//这句注解是创建数据库的表的语句@Table(name = "parent", onCreated = "CREATE UNIQUE INDEX index_name ON parent(name,email)")public class DBTest {@Column(isId = true, name = "id") private int id; @Column(name = "name") public String name; @Column(name = "email") private String email; @Column(name = "isAdmin") private boolean isAdmin; @Column(name = "time") private Date time; @Column(name = "date") private java.sql.Date date; 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public boolean isAdmin() { return isAdmin; } public void setAdmin(boolean isAdmin) { this.isAdmin = isAdmin; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public java.sql.Date getDate() { return date; } public void setDate(java.sql.Date date) { this.date = date; }}
如有错误请指出,谢谢
最后附上X3的jar包链接:http://download.csdn.net/detail/wx_anonymity/9466284
2 0
- XUtils 3 框架 介绍
- xUtils框架的介绍
- xUtils框架的介绍
- Xutils框架介绍
- xUtils框架的介绍
- xUtils框架介绍
- xUtils框架的介绍
- xUtils框架介绍
- xUtils框架的介绍
- xUtils框架的介绍
- xUtils框架的介绍
- Xutils框架介绍
- xUtils框架介绍(三)
- Android Xutils 框架的介绍
- xUtils框架的介绍(一)
- xUtils框架介绍(二)
- xUtils框架介绍(二)
- xUtils框架介绍(三)
- CodeForces - 651A Joysticks (找规律&模拟)水
- Java注释常用标签实例
- Hello world!
- Java 中的反射机制
- redis字符串类型的操作
- XUtils 3 框架 介绍
- Git分支管理策略
- 剑指offer面试题之数字在排序数组中的出现次数
- eclipse安装vim插件
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
- 类中重写equals方法
- java数据结构排序之归并排序实现
- 网络流24题之五 圆桌问题 最大匹配
- syblime 2+python3爬虫内容为中文导致error