安卓 开源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 对象 这样就区分出来了
浙公网安备 33010602011771号