请求数据并xml解析

来源:互联网 发布:没有可用软件包 nginx 编辑:程序博客网 时间:2024/06/11 19:53
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
原创粉丝点击