方法一:AsyncTask  看代码

package com.blogchina.activity;import java.util.ArrayList;import java.util.HashMap;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.blogchina.activity.R;import com.blogchina.utils.HttpUtil;import com.fedorvlasov.lazylist.LazyAdapter;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;import com.handmark.pulltorefresh.library.PullToRefreshListView;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.text.format.DateUtils;import android.view.View;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;public class HomelistActivity extends Activity{ static final int MENU_MANUAL_REFRESH = 0;static final int MENU_DISABLE_SCROLL = 1;static final int MENU_SET_MODE = 2;static final int MENU_DEMO = 3;LazyAdapter lazyAdapter;HttpUtil httpUtil = new HttpUtil();private PullToRefreshListView pullToRefreshListView;private ArrayList> data;final private String url = "http://*****/article/lists/is_only_pic/2/is_show_summary/1/limit/20";private ProgressDialog loadingDialog;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_homelist);loadingDialog = new ProgressDialog(this);loadingDialog.setTitle("");loadingDialog.setMessage("正在加载,请稍候");//listView = (ListView) findViewById(R.id.hl_listView);pullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);pullToRefreshListView.setOnRefreshListener(new OnRefreshListener() {@Overridepublic void onRefresh(PullToRefreshBase refreshView) {// TODO Auto-generated method stubString label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);// Update the LastUpdatedLabelrefreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);new MyTask().execute(url);//loadingDialog.show();}});// Add an end-of-list listenerpullToRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {@Overridepublic void onLastItemVisible() {Toast.makeText(HomelistActivity.this, "已经是最后一页了!", Toast.LENGTH_SHORT).show();}});loadingDialog.show();new MyTask().execute(url);//listView.setOnItemClickListener(new MyOnItemClickListener());pullToRefreshListView.setOnItemClickListener(new MyOnItemClickListener());}/** * 内部类,click item 传参跳转 * @author entere * */private class MyOnItemClickListener implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubListView actualListView = pullToRefreshListView.getRefreshableView();@SuppressWarnings("unchecked")HashMap map = (HashMap) actualListView.getItemAtPosition(arg2);Intent intent = new Intent();intent.setClass(HomelistActivity.this, DetailActivity.class);intent.putExtra("detail_bid", map.get("hli_bid").toString());intent.putExtra("detail_name", map.get("hli_name").toString());startActivity(intent);}}/** * 异步操作,并更新主ui * @author entere * */private class MyTask extends AsyncTask>> {//任务执行之前的操作@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();//loadingDialog.show();}//在后台完成解析json操作@Overrideprotected ArrayList> doInBackground(String... params) {// TODO Auto-generated method stubString jsonString = httpUtil.getHttpJson(params[0]);data = parseJsonMulti(jsonString);return data;}//完成任务之后更新ui@Overrideprotected void onPostExecute(ArrayList> result) {// TODO Auto-generated method stubif(result.size()<1) {Toast.makeText(HomelistActivity.this, "亲,网络很不给力哦!", Toast.LENGTH_SHORT).show();}super.onPostExecute(result);lazyAdapter = new LazyAdapter(HomelistActivity.this, result);        pullToRefreshListView.setAdapter(lazyAdapter);                pullToRefreshListView.onRefreshComplete();                loadingDialog.dismiss();}}//解析jsonprivate ArrayList> parseJsonMulti(String string) {ArrayList> arrayList = new ArrayList>();try {//JSONArray jsonObjs = new JSONObject(string.toString()).getJSONArray("article_list");JSONObject jsonObject = new JSONObject(string);JSONArray jsonArray = jsonObject.getJSONArray("article_list");for(int i=0; i hashMap = new HashMap();JSONObject obj = jsonArray.getJSONObject(i);Object hli_bid  = obj.get("article_id");Object hli_name = obj.get("user_name");Object hli_title = obj.get("article_title");Object hli_summary = obj.get("article_summary");Object hli_pubdate = obj.get("article_pubdate");Object hli_image = obj.get("article_pic");hashMap.put("hli_bid", hli_bid);hashMap.put("hli_name", hli_name);hashMap.put("hli_title", hli_title);hashMap.put("hli_summary", hli_summary);hashMap.put("hli_pubdate", hli_pubdate);hashMap.put("hli_image", hli_image);arrayList.add(hashMap);}return arrayList;} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}return arrayList;}}





方法二:Runnable+handler

package com.blogchina.activity;import java.util.ArrayList;import java.util.HashMap;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.blogchina.activity.R;import com.blogchina.utils.HttpUtil;import com.fedorvlasov.lazylist.LazyAdapter;import android.app.ListActivity;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.View;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView;import android.widget.ListView;public class BloglistActivity extends ListActivity{ LazyAdapter adapter;HttpUtil httpUtil;MyHandler myHandler;private ListView listView;private ArrayList> data;final private String url = "http://********/article/lists/is_only_pic/2/is_show_summary/1/limit/20";private ProgressDialog loadingDialog;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_bloglist);loadingDialog = ProgressDialog.show(this, "", "加载中……");listView = (ListView) findViewById(R.id.bl_listView);myHandler = new MyHandler();MyTheard myTheard = new MyTheard();new Thread(myTheard).start();}class MyHandler extends Handler {public MyHandler() {// TODO Auto-generated constructor stub}public MyHandler(Looper L) {super(L);}@Overridepublic void handleMessage(Message message){super.handleMessage(message);Bundle b = message.getData();String jsonStr = b.getString("jsonData");        data = parseJsonMulti(jsonStr);        adapter = new LazyAdapter(BloglistActivity.this, data);        listView.setAdapter(adapter);                        loadingDialog.dismiss();                listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stub@SuppressWarnings("unchecked")HashMap map = (HashMap) listView.getItemAtPosition(arg2);Intent intent = new Intent();intent.setClass(BloglistActivity.this, DetailActivity.class);intent.putExtra("detail_bid", map.get("bli_bid").toString());intent.putExtra("detail_name", map.get("bli_name").toString());startActivity(intent);}});                                }}class MyTheard implements Runnable {@Overridepublic void run() {// TODO Auto-generated method stubhttpUtil = new HttpUtil();Bundle bundle = new Bundle();bundle.putString("jsonData", httpUtil.getHttpJson(url));Message message = new Message();message.setData(bundle);BloglistActivity.this.myHandler.sendMessage(message);}}private ArrayList> parseJsonMulti(String string) {ArrayList> arrayList = new ArrayList>();try {//JSONArray jsonObjs = new JSONObject(string.toString()).getJSONArray("article_list");JSONObject jsonObject = new JSONObject(string);JSONArray jsonArray = jsonObject.getJSONArray("article_list");for(int i=0; i hashMap = new HashMap();JSONObject obj = jsonArray.getJSONObject(i);Object bli_bid  = obj.get("article_id");Object bli_name = obj.get("user_name");Object bli_title = obj.get("article_title");Object bli_summary = obj.get("article_summary");Object bli_pubdate = obj.get("article_pubdate");Object bli_image = obj.get("article_pic");hashMap.put("bli_bid", bli_bid);hashMap.put("bli_name", bli_name);hashMap.put("bli_title", bli_title);hashMap.put("bli_summary", bli_summary);hashMap.put("bli_pubdate", bli_pubdate);hashMap.put("bli_image", bli_image);arrayList.add(hashMap);}return arrayList;} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}return arrayList;}}


更多相关文章

  1. Android(安卓)Cache 解析
  2. Android解析json数据
  3. android操作ini工具类
  4. Android(安卓)解析XML
  5. Android(安卓)SQLite数据操作 【学习记录】
  6. Android(安卓)实现监听事件的几种方法
  7. 想抢先体验Android操作系统的魅力吗?那就使用Android(安卓)LiveCD
  8. android 新浪微博客户端的表情功能的实现
  9. android WebView解析 调用html5页面

随机推荐

  1. Android 怎么向打开的网页中自动填充用户
  2. 【初印象】Android手机屏幕适配API:nodpi,
  3. [置顶] Android(安卓)View视图------Andr
  4. 第三方应用获得system权限
  5. 总结了近百个Android优秀开源项目,覆盖And
  6. Android 和 iOS 各有千秋
  7. 9102年了,还不知道Android为什么卡?
  8. Android(安卓)Handler机制之循环消息队列
  9. Android 的线程跟线程池
  10. ionic---关于android和ios蓝牙的使用--以