xutil的使用,浅谈xUtils3的基本使用方法
来源:互联网 发布:网络电视是什么 编辑:程序博客网 时间:2024/05/17 05:26
Xutils3,分四大模块,view,数据库模块,图片模块,网络模块:
第一步,添加jar包:xUtils-3.3.22.jar,这个百度一下,免费下载很多,这里就不贴出来了。add as library,
第二步,在你的app中进行绑定并初始化,创建MyApp继承自Applacation,记得在清单文件中进行声明:
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); }}
<application android:name=".MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>如果进行网络操作或者sd卡操作,还得加权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
一切准备就绪,下面开始正式的进行描述:
1,view模块,通过注解的方式进行绑定和点击事件,注册解绑:
//绑定布局@ContentView(R.layout.activity_main)public class MainActivity extends AppCompatActivity { //绑定控件初始化 @ViewInject(R.id.text_view) TextView text_view; @ViewInject(R.id.btn_view1) Button button_view01; @ViewInject(R.id.btn_view2) Button button_view02; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// 绑定 x.view().inject(this); text_view.setText("什么都没做呢"); } @Event(value = {R.id.btn_view1, R.id.btn_view2}),方法必须是私有的 private void getEvent(View view) { switch (view.getId()) { case R.id.btn_view1: text_view.setText("这是01按钮响应"); break; case R.id.btn_view2: text_view.setText("这是02按钮响应"); break; } }}这里我写了两个按钮和一个文本框,当点击按钮的时候,文本框分别会显示不同的文本。注意红色的地方是必须要添加的,
在点击事件注解中他其实相当于
//等同于@Event(value={R.id.btn_get,R.id.btn_post},type=View.OnClickListener.class)只是这里默认的是view.onclick事件,如果要更改,直接将type进行更换即可,下面我在简单的从fragment和adapter,等地方讲解以下不同的地方,其他使用方式一致:
在fragment中,其他正常使用,但是返回view时这样写:
return x.view().inject(this, inflater, container);在适配器中:
if(convertView==null){ convertView=mInflater.inflate(R.layout.itemone, null); holder=new ViewHolder(); x.view().inject(holder,convertView); convertView.setTag(holder); } else{ holder=(ViewHolder) convertView.getTag(); } Person bean=list.get(position); holder.tv_name.setText(bean.getName()); x.image().bind(holder.iv_image, bean.getImgUrl(), options); return convertView; }在适配器中如果你要使用xutil需要在将viewhoder和convertView,进行绑定,图片也需要进行上边的关联。其他控件正常使用即可
到这里第一个模块就结束了,
网络模块:
网络请求简单讲有几个核心的方法:get请求
Cancelable cancelable = x.http().get(params, callback);post请求
Cancelable cancelable = x.http().post(params, callback);他有两个参数,第一个是它需要的请求参数,第二个是一个回调方法,在下边的封住工具类中具体的说明了两个参数的生成过程:
封装的发送请求的工具类:
public class XUtil { /** * 发送get请求 * @param <T> */ public static <T> Cancelable Get(String url,Map<String,String> map,CommonCallback<T> callback){ RequestParams params=new RequestParams(url); if(null!=map){ for(Map.Entry<String, String> entry : map.entrySet()){ params.addQueryStringParameter(entry.getKey(), entry.getValue()); } } Cancelable cancelable = x.http().get(params, callback); return cancelable; } /** * 发送post请求 * @param <T> */ public static <T> Cancelable Post(String url,Map<String,Object> map,CommonCallback<T> callback){ RequestParams params=new RequestParams(url); if(null!=map){ for(Map.Entry<String, Object> entry : map.entrySet()){ params.addParameter(entry.getKey(), entry.getValue()); } } Cancelable cancelable = x.http().post(params, callback); return cancelable; } /** * 上传文件 * @param <T> */ public static <T> Cancelable UpLoadFile(String url,Map<String,Object> map,CommonCallback<T> callback){ RequestParams params=new RequestParams(url); if(null!=map){ for(Map.Entry<String, Object> entry : map.entrySet()){ params.addParameter(entry.getKey(), entry.getValue()); } } params.setMultipart(true); Cancelable cancelable = x.http().post(params, callback); return cancelable; } /** * 下载文件 * @param <T> */ public static <T> Cancelable DownLoadFile(String url,String filepath,CommonCallback<T> callback){ RequestParams params=new RequestParams(url); //设置断点续传 params.setAutoResume(true); params.setSaveFilePath(filepath); Cancelable cancelable = x.http().get(params, callback); return cancelable; }}
响应后的解析类:
public class JsonResponseParser implements ResponseParser { //检查服务器返回的响应头信息 @Override public void checkResponse(UriRequest request) throws Throwable { } /** * 转换result为resultType类型的对象 * * @param resultType 返回值类型(可能带有泛型信息) * @param resultClass 返回值类型 * @param result 字符串数据 * @return * @throws Throwable */ @Override public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable { return new Gson().fromJson(result, resultClass); }}
最后一个就是回调方法:
public class MyCallBack<ResultType> implements Callback.CommonCallback<ResultType>{ @Override public void onSuccess(ResultType result) { //可以根据公司的需求进行统一的请求成功的逻辑处理 } @Override public void onError(Throwable ex, boolean isOnCallback) { //可以根据公司的需求进行统一的请求网络失败的逻辑处理 } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { }}有了这些工具类之后就可以进行一些网络请求,get和post操作了:
示例:get
String url="http://api.k780.com:88/?app=idcard.get"; Map<String,String> map=new HashMap<>(); map.put("appkey", "10003"); map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4"); map.put("format", "json"); map.put("idcard", "110101199001011114"); XUtil.Get(url, map, new MyCallBack<PersonInfoBean>(){ @Override public void onSuccess(PersonInfoBean result) { super.onSuccess(result); Log.e("result", result.toString()); } @Override public void onError(Throwable ex, boolean isOnCallback) { super.onError(ex, isOnCallback); } });post:
String url="http://api.k780.com:88/?app=idcard.get"; Map<String,Object> map=new HashMap<>(); map.put("appkey", "10003"); map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4"); map.put("format", "json"); map.put("idcard", "110101199001011114"); XUtil.Post(url, map, new MyCallBack<PersonInfoBean>(){ @Override public void onSuccess(PersonInfoBean result) { super.onSuccess(result); Log.e("result", result.toString()); } @Override public void onError(Throwable ex, boolean isOnCallback) { super.onError(ex, isOnCallback); } });
上传文件:
/** * 上传文件(支持多文件上传) */ private void uploadfile() { //图片上传地址 String url=""; Map<String,Object> map=new HashMap<>(); //传入自己的相应参数 //map.put(key, value); //map.put(key, value); XUtil.UpLoadFile(url, map, new MyCallBack<String>(){ @Override public void onSuccess(String result) { super.onSuccess(result); } @Override public void onError(Throwable ex, boolean isOnCallback) { super.onError(ex, isOnCallback); } }); }其他的同上,只是调用的方法是工具类中的其他方法而已,这里就不一一列举了
在接下来的文章里进行后边两个模块的讲解(网址):
http://blog.csdn.net/qq_35681180/article/details/53889157
1 0
- xutil的使用,浅谈xUtils3的基本使用方法
- Xutil框架的基本使用
- XUtils3框架的基本使用方法
- Xutils3的基本使用
- xUtils3 的基本使用
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(二)
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(二)
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(一)
- XUtil框架的使用
- Xutils,Xutils3的使用方法
- xutils3的详细使用方法
- Xutils和Xutils3的基本使用
- xUtils3.0的基本使用规则
- Xutils3框架的基本使用一
- Xutils3.+框架的基本使用操作
- Java Properties 的使用
- 网络流
- 约瑟夫问题
- 我怎么学spring-自动装配
- LeetCode #90 - Subsets II - Medium
- xutil的使用,浅谈xUtils3的基本使用方法
- Git简明教程
- 配置Tomcat时web.xml、server.xml和content.xml自动还原问题
- Linux终端中文显示乱码
- 位运算符与移位运算符
- OpenStack网络指南(5)网络地址转换(Network address translation)
- OJ 2014: C语言实验——圆周率
- iOS Xcode制作模板类
- 【JZOJ 4931】 A