xUtils的基本用法

第一步:初始化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);  
2.在Activity的oncreate方法中加入下面代码: 
x.view().inject(this);  
3.加载当前的Activity布局需要如下注解: 
@ContentView加入到Activity的上方 
4.给View进行初始化需要如下注解: 
@InjectView 
5.处理控件的各种响应事件需要如下注解: 
@Envent 
@Event这个注解默认情况下type属性为View.OnClickListener.class.如果你想实现其余点击事件效果,只需要把type值进行修改即可。
另外需要注意的一点是按钮的点击事件必须用private进行修饰。

 @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() {...});

4.数据库处理:

第一步 初始化数据库:

  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/50607476

http://blog.csdn.net/it1039871366/article/details/50607513






你可能感兴趣的:(常用的工具类)