您的位置:首页 > 其它

xml解析+刷新

2016-06-30 11:45 162 查看
public class MainActivity extends Activity implements IXListViewListener {

    //接口地址

    String path="http://www.oschina.net/action/api/news_list";

    LinkedList<Data> list = new LinkedList<Data>();

    Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {

            String xml = (String) msg.obj;

            xml(xml);

            xlistView.setAdapter(new MyAdpapter(MainActivity.this, list));

            

            for (Data news : list) {

                System.out.println(news.toString());

            }

        };

    };

    

    private XListView xlistView;

    private Data data;

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //获得控件对象

        xlistView=(XListView)findViewById(R.id.lv);

        // 下拉刷新是否激活

                xlistView.setPullRefreshEnable(true);

                // 加载更多是否激活

                xlistView.setPullLoadEnable(true);

                // xlistView刷新和加载更多的监听

                xlistView.setXListViewListener(this);

                getXml();

        

    }

    private void getXml() {

        HttpUtils httpUtils = new HttpUtils();

        httpUtils.configCurrentHttpCacheExpiry(0);

        httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {

            @Override

            public void onFailure(HttpException arg0, String arg1) {

                // TODO Auto-generated method stub

            }

            @Override

            public void onSuccess(ResponseInfo<String> arg0) {

                String result = arg0.result;

                Message msg = Message.obtain();

                msg.obj = result;

                handler.sendMessage(msg);

            }

        });

    }

    protected void xml(String xml) {

        // 得到解析器

        XmlPullParser pullParser = Xml.newPullParser();

        // 把Stirng转成流

        ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(

                xml.getBytes());

        try {

            pullParser.setInput(new InputStreamReader(arrayInputStream));

            // 得到事件类型

            int eventType = pullParser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {

                switch (eventType) {

                case XmlPullParser.START_TAG:

                    // 得到标签名

                    String tagName = pullParser.getName();

                    if ("news".equals(tagName)) {

                        data = new Data();

                    } else if ("title".equals(tagName)) {

                        data.title = pullParser.nextText();

                    } else if ("pubDate".equals(tagName)) {

                        data.pubDate = pullParser.nextText();

                    }

                    break;

                case XmlPullParser.END_TAG:

                    // 结束标签的名字

                    tagName = pullParser.getName();

                    if ("news".equals(tagName)) {

                        list.addLast(data);

                    }

                    break;

                }

                eventType = pullParser.next();

            }

        } catch (XmlPullParserException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

    

    public String getTime(){

        

        

        SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss");

        

        Date date=new Date();

        String time = format.format(date);

        return time;

        

        

    }

    @Override

    public void onRefresh() {

        getXml();

        // 停止加载更多

        xlistView.stopLoadMore();

        // 停止刷新

        xlistView.stopRefresh();

        //设置刷新时的时间

        xlistView.setRefreshTime(getTime());

                

                

    }

    @Override

    public void onLoadMore() {

        

        getXml();

        

        xlistView.stopLoadMore();

        xlistView.stopRefresh();    

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: