异步任务类
<pre name="code" class="java">AsyncTask<String, Void, List<Tuan>>
public class Like_ListTask extends AsyncTask<String, Void, List<Tuan>> {
private Context context; // 上下文对象
private ListView listview; // listview 对象
private TextView reader; // 显示加载的view
private Button lookall; // 全部团购的btn
private List<Tuan> list;
/**
* @param context 上下文对象
* @param listview listView组件
* @param list 保存listView显示数据的Tuan的集合
* @param reader 正在加载内容的textView组件
* @param lookall 查看全部团购的btn组件
* */
public Like_ListTask(Context context, ListView listview,List<Tuan> list,
TextView reader, Button lookall) {
this.context = context;
this.listview = listview;
this.reader = reader;
this.lookall = lookall;
this.list=list;
}
@Override
protected void onPreExecute() {
reader.setVisibility(View.VISIBLE);
lookall.setVisibility(View.INVISIBLE);
}
@Override
protected List<Tuan> doInBackground(String... params) {
try {
// 请求url
String json = JSONUtil.getJson(params[0]);
// 根据数据结构来解析json ,{}代表Object对象,[]代表数组,先获取JSON对象
JSONObject obj = new JSONObject(json);
// 得到data对象
JSONObject objData = obj.getJSONObject("data");
// 再得到tuan_list数组
JSONArray arrayTuan = objData.getJSONArray("tuan_list");
/**
* 循环取出arrayTuan数组里面的数据,(因为数组里面数据以键值对的方式存储,所以用Map)
* */
if (arrayTuan != null && arrayTuan.length() > 0) {
for (int i = 0, count = arrayTuan.length(); i < count; i++) {
// 因为数组里面放的是对象,所以先得到第i个位置的对象
JSONObject jo = arrayTuan.getJSONObject(i);
// 得到Tuan对象并存放到Tuan对象当中
Tuan tuan = new Tuan();
tuan.setBrand_name(jo.getString("brand_name"));
tuan.setShort_title(jo.getString("short_title"));
tuan.setGroupon_price(jo.getString("groupon_price"));
tuan.setMarket_price(jo.getString("market_price"));
tuan.setSale_count(jo.getString("sale_count"));
tuan.setImage(ImageUtil.getImage(jo.getString("image")));
list.add(tuan);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
/**
* 执行结束后,为LisView设置适配器
* ***/
@Override
protected void onPostExecute(List<Tuan> result) {
// 设置加载view关闭
reader.setHeight(0);
reader.setVisibility(View.INVISIBLE);
// 适配器
LikeAdapter adapter = new LikeAdapter(context, list);
listview.setAdapter(adapter);
ListScrollUtil.setListViewHeightBasedOnChildren(listview);
// 设置btn可见
lookall.setVisibility(View.VISIBLE);
}
}
异步任务的调用
// 猜你喜欢ListView异步任务(适配器)
listTuan = new ArrayList<Tuan>();
if (NetWorkStatus.checkNetWorkStatus(getApplicationContext())) {
Like_ListTask task = new Like_ListTask(MainActivity.this , listview ,
listTuan, reader , look_btn );
task.execute(Constants. LIKE_URL);
} else {
Toast. makeText(getApplicationContext(), "无法访问网络....",
Toast. LENGTH_SHORT).show();
}
http://blog.csdn.net/liuhe688/article/details/6532519