Android开发之Handler+HttpClient请求解析数据

读取字符流封装类

package com.fan.listview_show.utils;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamUtils {

    public static String streamUtils(InputStream inputStream) throws Exception{
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        byte[] buffer=new byte[1024];
        int len=0;
        while((len=inputStream.read(buffer))!=-1){
            byteArrayOutputStream.write(buffer, 0, len);
        }
        return byteArrayOutputStream.toString();
    }

}
public class Itemtwo extends Activity implements IXListViewListener {
    String url = "http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=0";
    private XListView listView;
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            String json = (String) msg.obj;
            Gson gson = new Gson();
            Jsondata jsondata = gson.fromJson(json, Jsondata.class);
            listView.setAdapter(new MyListAdapter(getApplicationContext(),
                    jsondata));
        };

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.itemactivity);
        listView = (XListView) findViewById(R.id.xlistview);
        listView.setPullLoadEnable(true);
        listView.setPullRefreshEnable(true);
        listView.setXListViewListener(this);
        gethttp();

    }

    private void gethttp() {
        // TODO Auto-generated method stub

        new Thread() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet(url);

                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    int statusCode = httpResponse.getStatusLine()
                            .getStatusCode();
                    if (statusCode == 200) {
                        InputStream inputStream = httpResponse.getEntity()
                                .getContent();
                        String str = StreamUtils.streamUtils(inputStream);
                        Log.i("TAG", str.toString());
                        Message msg = Message.obtain();
                        msg.obj = str;
                        handler.sendMessage(msg);
                    }

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        }.start();
    }

    @Override
    public void onRefresh() {
        // TODO Auto-generated method stub
        gethttp();
        onLoad();
    }

    @Override
    public void onLoadMore() {
        // TODO Auto-generated method stub
        gethttp();
        onLoad();
    }

    private void onLoad() {
        // TODO Auto-generated method stub
        listView.stopRefresh();
        listView.stopLoadMore();
        // 设置日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 获取当前系统时间
        String nowTime = df.format(new Date(System.currentTimeMillis()));
        // 释放时提示正在刷新时的当前时间
        listView.setRefreshTime(nowTime);
    }
}
时间: 2024-12-29 07:25:43

Android开发之Handler+HttpClient请求解析数据的相关文章

Android开发之Handler和Looper的关系

关于Handler的总结. Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理. Handler:处理者,负责Message的发送及处理.使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等. MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行.当然,存放Message并非实际意义的保存,而

Android开发之Handler的使用方法(源代码分享)

Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.. 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发.比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作.  如果此时需要一个耗时的操作,例如: 联网读取数据或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,,会收到An

android开发之notification通知完全解析

android开发之notification通知完全解析 本文主要介绍的是notification通知的使用,通过阅读此文,你可以了解,在android开发中,notification通知各种使用方法.本文的notification主要是针对android4.4以下的版本. 现在,我们来看一下,如何实现一个notification.估计大家现在最常用的做法是下面这种: Notification notification = new Notification(R.drawable.ic_launc

android开发之Handler的使用

1.常见使用,在线程中处理一些逻辑,处理完毕后将需要的数据发回给主线程,让主线程对UI进行修改. package com.lintao.handledemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import and

Android开发之Handler的用法(源码分享)

Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.. 当应用程序启动时.Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发. 比方说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作.  假设此时须要一个耗时的操作,比如: 联网读取数据或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,假设你放在主线程中的话,界面会出现假死现象, 假设5秒钟还没有完毕的话,.会收到A

Android开发之WebView与js的数据传递

在Android开发中不可避免的会出现,使用一个WebView来显示一个h5页面.如果仅仅只是显示h5页面,这不需要特殊的处理,但是很多情况下会出现,js和WebView的交互.比如:将html表单中的数据,传递到Activity中,在Activity中对数据校验,再上传到服务器. 那么js和WebView如何进行的交互的呢? 创建AndroidHtml项目.主要代码如下: MainActivity.java:     private WebView mWebView;     public s

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path.详细代码如下: MainActivyty.java: package com.example.analysisjson; import android.os.Bundle; import android.a

(转载)Android之三种网络请求解析数据(最佳案例)

[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报  分类: Gson.Gson解析(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 小武:相信大家都用过网络请求解析数据,只是方法不一样而已,但是,逻辑都是差不多的: 一:AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个

Android开发之Tween(补间动画)完全解析(下)

欢迎转载,转载请注明出处:http://blog.csdn.net/dmk877/article/details/51980734 在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,所以强烈建议先阅读上篇文章:Android开发之Tween(补间动画)完全解析(上),这篇文章将从代码的角度实现上篇文章的效果.如有疑问请留言,如有谬误欢迎批评指正. T