安卓 开源jar-android-async

刚开始学android,访问列表同事推荐用 android-async

首先 到官网

https://github.com/loopj/android-async-http/tree/master/releases

下载相应的jar包 我选的是1.4版本的

不是下完就完了,记得要导进去哈~!

然后 见一个工具类,谁知道有啥用啊,实现为主

package cn.com.util;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

public class HttpUtil {
     private static     AsyncHttpClient client =new AsyncHttpClient();    //实例话对象
         static
         {
             client.setTimeout(11000);   //设置链接超时,如果不设置,默认为10s
         }
         public static void get(String urlString,AsyncHttpResponseHandler res)    //用一个完整url获取一个string对象
         {
             client.get(urlString, res);
         }
         public static void get(String urlString,RequestParams params,AsyncHttpResponseHandler res)   //url里面带参数
         {
             client.get(urlString, params,res);
         }
         public static void get(String urlString,JsonHttpResponseHandler res)   //不带参数,获取json对象或者数组
         {
             client.get(urlString, res);
         }
         public static void get(String urlString,RequestParams params,JsonHttpResponseHandler res)   //带参数,获取json对象或者数组
         {
             client.get(urlString, params,res);
         }
         public static void get(String uString, BinaryHttpResponseHandler bHandler)   //下载数据使用,会返回byte数据
         {
             client.get(uString, bHandler);
         }
         public static AsyncHttpClient getClient()
         {
             return client;
         }

}

随后在你的 Activity 里需要调用的地方 调用下里面的不分代码为

package cn.com.jlw;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import cn.com.util.HttpUtil;

import com.loopj.android.http.AsyncHttpResponseHandler;

public class JLW_DEMO_READJSONActivity extends Activity {
    /** Called when the activity is first created. */
    private ProgressDialog pDialog;
    private TextView outString;
    private ListView listView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView = (ListView) this.findViewById(R.id.contentList);
        outString = (TextView) this.findViewById(R.id.outString);
        pDialog = ProgressDialog.show(this, "请稍等", "数据加载中");
        String httpUrl = "http://192.168.0.212:8080/demoJlw/servlet/PersonServlet";
        HttpUtil.get(httpUrl, new AsyncHttpResponseHandler() {

            @Override
            public void onSuccess(String arg0) {
                pDialog.dismiss();
                Log.i("hck", arg0);
                try {
                    JSONArray jsonArray = new JSONArray(arg0);
                    List<HashMap<String,Object>> listItem=new ArrayList<HashMap<String,Object>>();
                    outString.setText("size+"+jsonArray.length());
                    for(int i=0;i<jsonArray.length();i++){
                        HashMap<String,Object> item=new HashMap<String,Object>();
                        JSONObject jsonObj=(JSONObject) jsonArray.get(i);
                        item.put("name", jsonObj.get("name"));
                        item.put("age", jsonObj.get("age"));
                        item.put("height", jsonObj.get("height"));
                        listItem.add(item);
                    }
                    SimpleAdapter adapter = new SimpleAdapter(JLW_DEMO_READJSONActivity.this, listItem, R.layout.item,
                            new String[] { "name", "age", "height" },
                            new int[] {    R.id.name, R.id.age, R.id.height });
                    listView.setAdapter(adapter);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                // outString.setText(arg0);
            }

        });

    }
}

这里需要注意的是 所有业务代码都需要卸载这个类里AsyncHttpResponseHandler,否则在android的4.0里会报线程安全错误

还有几点需要注意,如果你穿过来的是列表 要用JSONArray去转换下,然后遍历的时候 再用JSONObject  转换 遍历出来的 JSONArray 这样你就得到了 集合里的每组数据了

观察这个其实很简单 array数组 object 对象 这样就区分出来了

 

 

posted on 2014-06-10 11:59  笨蛋蜗牛  阅读(367)  评论(0)    收藏  举报

导航