Xutlis(网络、图片、视图id、数据库的依赖注入)
2016-12-23 本文已影响127人
RoboyCore
!数据库请求实体类必须
首先全局设置参数
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(true);
}
}
1.Id注入
1.1布局和控件id注入
!!!adapter用handler那个注入
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.tv)
private TextView tv;//控件id注入
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
x.view().inject(this);//布局注入
tv.setText("xiaowu");
}
1.2事件注入(默认点击事件)
/**
* 事件注解.
* 被注解的方法必须具备以下形式:
* 1. private 修饰
* 2. 返回值类型没有要求
* 3. 参数签名和type的接口要求的参数签名一致.
* @param v
*/
@Event(type = View.OnClickListener.class,value = {R.id.tv,R.id.tv2})//事件注入
private void click(View v){
switch (v.getId()) {
case R.id.tv:
Toast.makeText(this, "这是注入的文本控件", Toast.LENGTH_SHORT).show();
break;
case R.id.tv2:
Toast.makeText(this, "2", Toast.LENGTH_SHORT).show();
break;
}
}
2.网络请求
2.1GET
RequestParams params = new RequestParams("https://www.baidu.com/"); // 网址(请替换成实际的网址)
params.addQueryStringParameter("key", "value"); // 参数(请替换成实际的参数与值)
x.http().get(params, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
// 注意:如果是自己onSuccess回调方法里写了一些导致程序崩溃的代码,也会回调道该方法,因此可以用以下方法区分是网络错误还是其他错误
// 还有一点,网络超时也会也报成其他错误,还需具体打印出错误内容比较容易跟踪查看
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
if (ex instanceof HttpException) { // 网络错误
HttpException httpEx = (HttpException) ex;
int responseCode = httpEx.getCode();
String responseMsg = httpEx.getMessage();
String errorResult = httpEx.getResult();
// ...
} else { // 其他错误
// ...
}
}
// 不管成功或者失败最后都会回调该接口
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
}
});
2.2POST
<span style="white-space:pre"> </span>RequestParams params = new RequestParams("https://www.baidu.com/"); // 网址(请替换成实际的网址)
params.addBodyParameter("key", "value"); // 参数(请替换成实际的参数与值)
x.http().post(params, new CommonCallback<String>() {
@Override
public void onCancelled(CancelledException arg0) {
}
// 注意:如果是自己onSuccess回调方法里写了一些导致程序崩溃的代码,也会回调道该方法,因此可以用以下方法区分是网络错误还是其他错误
// 还有一点,网络超时也会也报成其他错误,还需具体打印出错误内容比较容易跟踪查看
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
if (ex instanceof HttpException) { // 网络错误
HttpException httpEx = (HttpException) ex;
int responseCode = httpEx.getCode();
String responseMsg = httpEx.getMessage();
String errorResult = httpEx.getResult();
// ...
} else { // 其他错误
// ...
}
}
// 不管成功或者失败最后都会回调该接口
@Override
public void onFinished() {
}
@Override
public void onSuccess(String arg0) {
}
});
调用get方法,添加参数是用addQueryStringParameter。调用post方法,添加参数是用addBodyParameter。
3.图片加载
可以轻松实现圆形头像的设置
ImageOptions.Builder options = new ImageOptions.Builder();
// options.setAnimation()
options.setCircular(true)//圆形图片
.setFadeIn(true)//渐入动画
.setFailureDrawableId(R.mipmap.ic_launcher)
.setLoadingDrawableId(R.mipmap.ic_launcher)
.setRadius(30);
String url = "http://avatar.csdn.net/8/B/B/1_sinyu890807.jpg";
x.image().bind(iv, url, options.build()
/*,new CommonCallback<Drawable>可以设置回调方法*/);
4.数据库实体类转换
ORM对象关系映射
4.1初始化DbManager.Config
public class MyApplication extends Application {
public DbManager.DaoConfig mDaoConfig;//数据库全局配置
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(true);
mDaoConfig = new DbManager.DaoConfig()
.setDbName("MyTest.db")
.setDbVersion(1).setAllowTransaction(true)//设置是否开启事务
.setTableCreateListener(new DbManager.TableCreateListener() {
@Override
public void onTableCreated(DbManager db, TableEntity<?> table) {
//版本创建
}
}).setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
//版本升级
}
});
默认的构造方法必须写出,如果没有,这张表是创建不成功的
4.2实体类使用注解
@Table(name = "BroadCast")
public class Model {}//表注解
@Column(name = "id",isId = true)
public int id;//列注解,是否主键