第一步:初始化xUtils
第一步就是必须创建自己的Application类,在AndroidManifest.xml的application标签中添加如下代码,这样初始化就算完成了。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
}
}
第二步:根据需要使用不同的框架:
1.注解
@ContentView(value = R.layout.activity_view)
public class ViewActivity extends AppCompatActivity {
@ViewInject(value = R.id.tv_view_tile)
private TextView mTextViewTitle;
@ViewInject(R.id.lv_view_test)
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_view);
x.view().inject(this);
EventBus.getDefault().register(this);
setData();
}
}
1.在Application的oncreate方法中加入下面代码:
x.Ext.init(this);
x.view().inject(this);
@Event(value = R.id.lv_view_test,type = AdapterView.OnItemClickListener.class)
private void 这是listview的item点击事件(AdapterView> parent, View view, int position, long id){
Toast.makeText(ViewActivity.this, "点击了第"+position+"个条目", Toast.LENGTH_SHORT).show();
}
点击事件的方法名随便写,但方法形参必须和该种点击事件的形参一致。
// 多个点击事件注入 以数组形式传递参数
// @Event 这个注解默认注入的点击事件OnClickListener(View view)
//方法的参数类型必须要和你当前的事件类型是一样的
@Event({R.id.bt_view_test,R.id.bt_view_testes})
private void onClick(View view) {
Toast.makeText(ViewActivity.this, "如果没有参数", Toast.LENGTH_SHORT).show();
if (view!=null){
switch (view.getId()){
case R.id.bt_view_test:
String s = mTextViewTitle.getText().toString();
Toast.makeText(ViewActivity.this, "大家节日快乐"+s, Toast.LENGTH_SHORT).show();
break;
case R.id.bt_view_testes:
//Toast.makeText(ViewActivity.this, "有男女朋友的同学,赶快分手,不然就要送礼物了", Toast.LENGTH_SHORT).show();
startActivity(new Intent(this,CustomViewJectActivity.class));
break;
}
}
}
2.网络请求:
// params1 请求的参数
// params2 请求回调监听
RequestParams getParams = new RequestParams(NetConfig.GET_PATH);
//每发送一条网络请求都会返回一个cancelble对象,用来取消网络请求
mCancelable = x.http().get(getParams, new Callback.CommonCallback() {
@Override
public void onSuccess(String result) {
Toast.makeText(HttpActivity.this, result, Toast.LENGTH_SHORT).show();
//throw new NullPointerException("如果是onSuccess 里面出现任何异常,都会走onError");
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(HttpActivity.this, "网络请求失败,检查网络", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(CancelledException cex) {
Toast.makeText(HttpActivity.this, "cancel", Toast.LENGTH_SHORT).show();
}
@Override
public void onFinished() {
Toast.makeText(HttpActivity.this, "finish", Toast.LENGTH_SHORT).show();
}
});
post请求
RequestParams postParams = new RequestParams(NetConfig.POST_PATH);
postParams.addBodyParameter("username","123");
postParams.addBodyParameter("pwd","123");
x.http().post(postParams, new Callback.CommonCallback() {
@Override
public void onSuccess(String result) {
Toast.makeText(HttpActivity.this, result, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
3.加载图片
x.image().bind(mImageView, NetConfig.IMAGE_PATH);
//或者
x.image().bind(mImageView,NetConfig.IMAGE_PATH,mOptions);
mOptions = new ImageOptions.Builder()
// 设置 config 每一个像素所占大小
.setConfig(Bitmap.Config.RGB_565)
//设置加载出错的图片
.setFailureDrawableId(R.mipmap.ic_launcher)
// 设置加载过程中的图片
.setLoadingDrawableId(R.mipmap.ic_launcher)
// 是否是圆形的
.setCircular(true)
// 设置是否使用内存缓存
.setUseMemCache(true)
// 设置是否渐入
.setFadeIn(true)
//设置是否忽略gif
.setIgnoreGif(false).build();
如果需要对加载的图片进行操作的话,可以使用:
x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback
第一步 初始化数据库:
DbManager.DaoConfig config = new DbManager.DaoConfig();
// 是否支持事务 config.setAllowTransaction()
// 设置数据库开大的监听 config.setDbOpenListener()
// 设置数据存放位置 config.setDbDir()
// 设置 数据库的名字 config.setDbName()
// 设置数据库的版本 config.setDbVersion()
// 设置数据库版本升级的监听 config.setDbUpgradeListener()
// 获取数据库操作对象
mDb = x.getDb(config);
有必要说明的一点是setDbDir(new File(“/sdcard”)),可以将数据库存储在你想存储的地方,如果不设置,那么数据库默认存储在/data/data/你的应用程序/database/xxx.db下。这里我们就默认放在应用程序下。
创建数据库字段和表名:
@Table(name = "user")
public class User {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
@Column(isId = true,name = "id")
private int id;
@Column(name = "username")
private String name;
@Column(name = "age")
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
第三步,操作数据库:
case R.id.bt_db_add:
User user = new User();
user.setAge(18);
user.setName("小花");
try {
// 存入数据
// 要求 存入字段上要有 Column 注解
mDb.save(user);
} catch (DbException e) {
e.printStackTrace();
}
break;
case R.id.bt_db_delete:
//User userD = new User();
// userD.setName("小花");
// userD.setId(1);
// userD.setAge(18);
try {
// 他是根据id去找到并删除
// mDb.delete(userD);
// WhereBuilder 其实是对Sql 语句的拼接 ,
// and (是两个条件都满足) or 是两个条件满足其一就行
//操作符 = > < like in BETWEEN
mDb.delete(User.class, WhereBuilder.b("age","=","18").and("username","LIKE","%小%"));
} catch (DbException e) {
e.printStackTrace();
}
break;
case R.id.bt_db_update:
//具体修改的值 第一个参数是 需要修改的列名 第二个参数是需要修改的值
KeyValue value = new KeyValue("age",23);
KeyValue valueName = new KeyValue("username","于洋");
try {
mDb.update(User.class, WhereBuilder.b("username", "=", "小花"),value,valueName );
// mDb.update(object,"需要修改列名");
//User userU = new User();
//userU.setName("lala");
//userU.setAge(19);
//userU.setId(26);
// mDb.update(userU,"age","username");
} catch (DbException e) {
e.printStackTrace();
}
break;
case R.id.bt_db_select:
try {
List users = mDb.selector(User.class).where("age", "=", "23").or("age", "=", "19").findAll();
for (int i = 0; i < users.size(); i++) {
Log.d("TAG", "onClick: user == "+users.get(i).toString());
}
} catch (DbException e) {
e.printStackTrace();
}
break;
http://blog.csdn.net/it1039871366/article/details/50607513