网络获取xml文件,pull解析listVist展示

来源:互联网 发布:linux dhcp option 66 编辑:程序博客网 时间:2024/06/06 21:38

webView   展示

package com.example.xmlpull;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ShowActivity extends Activity {

    private WebView wb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        wb=(WebView)findViewById(R.id.wb);
        String url=getIntent().getStringExtra("url");
        WebSettings set = wb.getSettings();
        set.setJavaScriptEnabled(true);
        wb.loadUrl(url);
        wb.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.show, menu);
        return true;
    }

}


工具包代码

package utils;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import bean.News;

import android.content.res.XmlResourceParser;
import android.util.Xml;


public class HttpUtils {
        public static String qudu(String path) throws Exception{
            //建立一个URL对象  
            URL url = new URL(path);  
            //得到打开的链接对象  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            //设置请求超时与请求方式  
            conn.setReadTimeout(5*1000);  
            conn.setRequestMethod("GET");  
            //从链接中获取一个输入流对象  
            BufferedReader bf=new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuffer sb=new StringBuffer();
            String ss;
            while((ss=bf.readLine())!=null){
                sb.append(ss);
            }
            return sb.toString();
        }
        public static List<News> paerss(String str) throws Exception{
            List<News> list=new ArrayList<News>();
            XmlPullParser pull=Xml.newPullParser();
            ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
            pull.setInput(in,"utf-8");
            News n=null;
            int type = pull.getEventType();
            while(type!=XmlResourceParser.END_DOCUMENT){
                String name=pull.getName();
                switch (type) {
                case XmlResourceParser.START_DOCUMENT:
                    break;
                case XmlResourceParser.START_TAG:
                    if("item".equalsIgnoreCase(name)){
                        n=new News();
                    }else if("title".equalsIgnoreCase(name)){
                        n.setTitle(pull.nextText());
                    }else if("link".equalsIgnoreCase(name)){
                        n.setLink(pull.nextText());
                    }else if("copyright".equalsIgnoreCase(name)){
                        n.setCopyright(pull.nextText());
                    }else if("pubDate".equalsIgnoreCase(name)){
                        n.setPubDate(pull.nextText());
                    }
                    break;
                case XmlResourceParser.END_TAG:
                    if("item".equalsIgnoreCase(name)){
                        list.add(n);
                        n=null;
                    }
                    break;
                default:
                    break;
                }
                type=pull.next();
            }
            return list;
        }
                    
}    


主Activity页面

package com.example.xmlpull;


import java.util.List;


import utils.HttpUtils;

import bean.News;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
    private List<News> list;
    private ListView lv;
    private String url="http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.lv);
        new AsyncTask<String, Void, List<News>>(){

            

            @Override
            protected List<News> doInBackground(String... params) {
                try {
                    String s = HttpUtils.qudu(params[0]);
                    Log.i("999", s);
                    list=HttpUtils.paerss(s);
                    Log.i("0000", list.size()+"");
                    return list;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return list;
            }

            protected void onPostExecute(java.util.List<News> result) {
                lv.setAdapter(new MyAdapter(MainActivity.this,result));
            };
            
        }.execute(url);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent=new Intent(MainActivity.this, ShowActivity.class);
                intent.putExtra("url", list.get(position).getLink());
                startActivity(intent);
            }
        });    
        
    }

    
}

0 0