AndroidStudio 中使用Xutils3注解

新建一个类继承Application  实现里面的onCreate方法


import org.xutils.x;

/**
 * Created by KeLei on 2016/2/2.
 */
public class LYZApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(true); // 是否输出debug日志

    }
}
在AndroidManiFest中添加这个类


初始化成功



Fragment注解的方式


@ContentView(R.layout.fragment_first)
public class FirstFragment extends Fragment {
private MyAdapter adapter;
private List<Person> list = new ArrayList<>();
private List<String> listUrl = new ArrayList<>();
private List<String> listName = new ArrayList<>();
@ViewInject(R.id.btn_test)
Button btn_test;
@ViewInject(R.id.listView)
ListView listView;

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return x.view().inject(this, inflater, container);
}


ViewHolder注解的方式

public class MyAdapter extends BaseAdapter {
private Context context;
private List<Person> list;
private LayoutInflater mInflater;
private ImageOptions options;
public ViewHolder holder;

public MyAdapter(Context context, List<Person> list) {
this.context = context;
this.list = list;
this.mInflater = LayoutInflater.from(context);
options = new ImageOptions.Builder().setLoadingDrawableId(R.drawable.ic_launcher).setLoadingDrawableId(R.drawable.ic_launcher).setUseMemCache(true).setCircular(true).build();
}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
holder = null;
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;
}

class ViewHolder {
@ViewInject(R.id.tv_name)
private TextView tv_name;
@ViewInject(R.id.iv_image)
private ImageView iv_image;
}


XUtils的网络请求方法和一些网络请求框架的用法非常类似,我进行了一些简单的封装。 
封装一共有3个文件,分别是网络请求工具类XUtil,请求响应数据的解析类,还有一个就是一个请求成功的一个接口回调类。


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



示例1    get请求

//本get请求来自于免费测试接口:http://www.k780.com/api/entry.baiduString 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); } } );


示例2  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);}});




原文链接为
http://www.th7.cn/Program/java/201512/740752.shtml  代码未格式化
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值