请求数据并xml解析

public class MainActivity extends Activity {


    private ListView lv;
    private ArrayList<DataBean> list=new ArrayList<DataBean>();
    String path="http://v.juhe.cn/weixin/query?key=271f7c3d187e09fd414733d4e8b06e8b&dtype=xml";
    private Handler mHandler=new Handler(){
        public void handleMessage(Message msg) {
            ArrayList<DataBean> list=(ArrayList<DataBean>) msg.obj;

            //适配器要在handler里边用
            lv.setAdapter(new MyAdapter(MainActivity.this,list));

            //设置监听
            jianTing();
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取控件
        lv = (ListView) findViewById(R.id.lv);

        //获取数据
        getData();
    }

    //监听
    public void jianTing(){
        //监听
        lv.setOnItemClickListener(new OnItemClickListener() {


            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                //传递路径
                intent.putExtra("url", list.get(arg2).getUrl());
                startActivity(intent);
            }
        });
    }


    //请求并解析数据
    private void getData() {

        new Thread(){
            private InputStream in;
            private DataBean d;


            public void run() {
                //创建HttpClient
                HttpClient client=new DefaultHttpClient();
                //设置请求方式
                HttpGet get=new HttpGet(path);
                try {
                    //执行
                    HttpResponse response = client.execute(get);
                    //得到一个结果码
                    int statusCode = response.getStatusLine().getStatusCode();
                    //判断这个结果码
                    if (statusCode==200) {
                        //得到一个流
                        in = response.getEntity().getContent();

                        //打印
                        System.out.println(in);
                    }

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

                try {
                    //解析
                    XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
                    //创建解析器
                    XmlPullParser newPullParser = factory.newPullParser();
                    //把文件放进去,开始解析
                    newPullParser.setInput(in,"utf-8");

                    //获取一个类型
                    int eventType = newPullParser.getEventType();
                    while (eventType!=XmlPullParser.END_DOCUMENT) {
                        String name = newPullParser.getName();

                        switch (eventType) {
                        case XmlPullParser.START_TAG:
                            if ("firstImg".equals(name)) {
                                d = new DataBean();
                                d.setFirstImg(newPullParser.nextText());
                            }else if ("id".equals(name)) {
                                d.setId(newPullParser.nextText());
                            }else if ("mark".equals(name)) {
                                d.setMark(newPullParser.nextText());
                            }else if ("source".equals(name)) {
                                d.setSource(newPullParser.nextText());
                            }else if ("title".equals(name)) {
                                d.setTitle(newPullParser.nextText());
                            }else if ("url".equals(name)) {
                                d.setUrl(newPullParser.nextText());
                            }
                            break;
                        case XmlPullParser.END_TAG:
                            if ("item".equals(name)) {
                                list.add(d);

                                d=null;
                            }
                            break;


                        default:
                            break;
                        }
                        //继续下一个
                        eventType=newPullParser.next();
                    }

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

                //创建message
                Message msg = new Message();
                msg.obj=list;
                mHandler.sendMessage(msg);

            };
        }.start();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值