您的位置:首页 > 其它

Volley框架 xUtils 框架

2015-09-14 14:55 363 查看

Volley



代码中用到的是POST方法,写了一个匿名内部类,复写了一个protected Map

public class VolleyActivity extends Activity implements View.OnClickListener {
private Button mButtonVolley;
private Button mButtonImage;
private TextView mTextViewConnect;
private NetworkImageView mNetworkImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_volley);
mButtonVolley = (Button) findViewById(R.id.button_volley);
mButtonImage = (Button) findViewById(R.id.button_image);
mButtonVolley.setOnClickListener(this);
mButtonImage.setOnClickListener(this);
mTextViewConnect = (TextView) findViewById(R.id.textview_connect);
mNetworkImageView = (NetworkImageView) findViewById(R.id.netimage);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button_image:
mNetworkImageView.setImageUrl("http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg", MySingleton.getInstance(this).getImageLoader());
break;
case R.id.button_volley:
//                RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextViewConnect.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextViewConnect.setText("网络连接错误");
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> map = new HashMap<>();
map.put("username","zhangsan");
return super.getParams();
}
};
//                requestQueue.add(stringRequest);
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
break;
}
}
}


单例设计

public class MySingleton {
private static MySingleton mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;

private MySingleton(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();

mImageLoader = new ImageLoader(mRequestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);

@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}

@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});

}

public static synchronized MySingleton getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySingleton(context);
}
return mInstance;
}

public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}

public ImageLoader getImageLoader() {
return mImageLoader;
}
}


xUtils

xUtils也是封装好的一个东西,包含的内容很多,包括HttpUtils、ViewUtils、BitmapUtils、dbUtils.

使用时注意倒包。

HttpUtils

用于网络连接,因为是封装好的,所以用起来比较方便。

同样包含get和post两种方法

可以利用反射机制,不需要写findViewById,引入布局文件的方法如下:@ViewInject(R.id.button_xutils_get)

ViewUtils.inject(this);

package com.example.administrator.networkdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

/**
* Created by Administrator on 2015/9/14.
*/
public class XUtilsActivity extends Activity implements View.OnClickListener {
@ViewInject(R.id.button_xutils_get)
private Button mButtonXutilsGet;
@ViewInject(R.id.button_xutils_post)
private Button mButtonXutilsPost;
@ViewInject(R.id.textview_connect)
private TextView mTextViewContent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xutils);
ViewUtils.inject(this);
}
@OnClick({R.id.button_xutils_get,R.id.button_xutils_post})

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button_xutils_get:
HttpUtils client = new HttpUtils();
client.send(HttpRequest.HttpMethod.GET, "http://www.360.com", new RequestCallBack<String>() {//第三个参数new RequestCallBack是对事件的监听
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextViewContent.setText(responseInfo.result);
}

@Override
public void onFailure(HttpException e, String s) {
//                        e.getExceptionCode();
mTextViewContent.setText("网络连接错误");
}
});
break;
case R.id.button_xutils_post:
HttpUtils client2 = new HttpUtils();
RequestParams params = new RequestParams();
params.addBodyParameter("username","xutilspost");
client2.send(HttpRequest.HttpMethod.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", params, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextViewContent.setText(responseInfo.result);
}

@Override
public void onFailure(HttpException e, String s) {
mTextViewContent.setText("网络连接错误");
}
});
break;
}
}
}


dbUtils

利用xUtils还可以方便数据库查找,具体方法如下:user是表名,my_first_db是数据库名。

同样注意倒包。

case R.id.button_select:
DbUtils dbUtils = DbUtils.create(this,"my_first_db");
try {
List<User> users = dbUtils.findAll(Selector.from(User.class));
for (User user:users){
Log.d("cursor","用户名"+user.getName()+"   密码"+user.getPassword());
}
} catch (DbException e) {
e.printStackTrace();
}


@Table(name = "user")
public class User {
@Column(column = "id")
private String id;
private String name;
private String password;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: