今天来给大家讲讲关于Xutil的一些使用心得,不足之处还请各位码友指点一二。首先,在博主看来Xutils确实是一个相对来说比较强大的网络请求框架了,每次做项目都是优先考虑(博主我还是小菜鸟,见谅 - . -),老套路,废话不多说上代码。
首先最重要的当然是在新建的项目里边导入Xutils的最新架包,这些东西博主就不贴出来了,自己到网上下载就好
就拿登录接口来举例:
public static void UserLogin(RequestParams param, final DResponseCallBack<Long> callBack) {
String ApiUrl = UrlsHttpBiz.USER_LOGIN_URLS;//用户登录接口
HttpUtils http = new HttpUtils();
http.send(HttpRequest.HttpMethod.POST, ApiUrl, param, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
Log.i("kkkk","用户登录请求数据展示===="+ responseInfo.result);
Gson gson = new Gson();
PersonModle personModle = gson.fromJson(responseInfo.result,PersonModle.class);
BaseModle.Datas.username = personModle.getData().username;
if(personModle.code == 200){
callBack.Success(String.valueOf(personModle.code));
}else{
callBack.Fail(personModle.message);
}
return;
}
@Override
public void onFailure(HttpException error, String msg){
callBack.Fail(msg);
return;
}
});
}
这一类型的网络请求方法都可以封装到一个类里边,然后在根据各自的需求调用。
调用方式如下:
RequestParams param = new RequestParams();
param.addBodyParameter("username", DL_editText_username.getText().toString());
param.addBodyParameter("password2", DL_editText_password.getText().toString());
if(DL_editText_username.getText().toString().equals(username)&&
DL_editText_password.getText().toString().equals(password)){
/**在这里开始调用*/
UserHttpBiz.UserLogin(param, new DResponseCallBack<Long>() {
@Override
public void Success(String Result) {
if(Result.equals("200")){
Toast.makeText(getApplication(),"登录成功",Toast.LENGTH_SHORT).show();
Intent login_intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(login_intent);
finish();
return;
}else{
Toast.makeText(getApplication(),"登录失败",Toast.LENGTH_SHORT).show();
}
}
@Override
public void Fail(String ErrMsg) {
Toast.makeText(getApplication(),ErrMsg,Toast.LENGTH_SHORT).show();
}
});
}else{
Toast.makeText(getApplication(),"密码或账号填写有误",Toast.LENGTH_SHORT).show();
}
关于接口的调用可能每个人有每个人的方式,按自己的编码方式来就好。关于Toast博主认为直接封装起来可能比较好,也方便调用。
接下来就是关于接口里边的一些方法,比如:DResponseCallBack<Long,代码如下:
public abstract class DResponseCallBack<T> {
public abstract void Success(String Result);
public abstract void Fail(String ErrMsg);
}
那关于Xutils的Post请求就写到这,其他的一些参数的话都是一眼能够看明白的,我就不过多的赘述了。
关于Xutils的注解:
相信大家在最初接触代码的时候,听到最多的可能就是findViewById吧,其实博主我也最初也相当相当相当的讨厌这种又长又臭的代码了,但是奈何技术有限,只能硬着头皮一个一个的写。但是经过这么旧的进化,终于是守得云开啦,今天就跟大家讲讲怎么使用这个注解来摆脱findViewById。
Xutils是自带注解这么一个强大的功能的:
@ViewInject(R.id.Intothelibrary_layout)LinearLayout Intothelibrary_layout;
这样就可以了是不是简单粗暴。
再来讲讲控件的监听事件:
/**多个*/
@OnClick({R.id.Intothelibrary_layout,R.id.salecollection_layout})
/**单个*/
@OnClick(R.id.Intothelibrary_layout)
/**实现方法*/
public void OnClick(View v){
switch (v.getId()){
case R.id.Intothelibrary_layout:
/**执行的内容*/
break;
case R.id.salecollection_layout:
/**执行的内容*/
break;
}
}
好了,就是这么简单。