請求數據並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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章