安卓笔记之解析XML文件并通过BaseAdapter显示至ListView

package com.example.day0328_xmlparse;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ListView;

public class MainActivity extends Activity {
    private String url = "http://10.16.154.26:8080/Web_Product/CityServlet?type=xml";
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.lv);
        MyTask myTask = new MyTask(MainActivity.this,listView);
        myTask.execute(url);
    }
}
package com.example.day0328_xmlparse;

import java.util.List;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MyTask extends AsyncTask<String, Void, List<String>> {
    private Context context;
    private ListView listView;
    public MyTask(Context context,ListView listView){
        this.context = context;
        this.listView = listView;
    }
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }
    @Override
    protected List<String> doInBackground(String... params) {
        // TODO Auto-generated method stub
        String url =params[0];
        String xmlStr = HttpUtils.httpXmlStr(url);
        List<String> citys = XmlUtils.parseXmlStr(xmlStr);
        for(String c: citys){
        Log.i("aa", c+"");
        }
        return citys;
    }
    @Override
    protected void onPostExecute(final List<String> result) {
        // TODO Auto-generated method stub
        listView.setAdapter(new BaseAdapter() {
            
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                View view=null;
                ViewHolder holder;
                if(convertView==null){
                    view = LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, null);
                    holder = new ViewHolder();
                    holder.textView =(TextView) view.findViewById(android.R.id.text1);
                    view.setTag(holder);
                }else{
                    view = convertView;
                    holder = (ViewHolder) view.getTag();
                }
                String text = result.get(position);
                holder.textView.setText(text);
                return view;
            }
            
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }
            
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return null;
            }
            
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return result.size();
            }
            class ViewHolder{
                public TextView textView;
            }
        });
        super.onPostExecute(result);
    }
}
package com.example.day0328_xmlparse;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;



public class HttpUtils {
    public static String httpXmlStr(String url){
        //拿到客户端对象
        HttpClient client = new DefaultHttpClient();
        //获取请求方式
        HttpGet get = new HttpGet(url);
        try {
            HttpResponse httpResponse = client.execute(get);
            if (httpResponse.getStatusLine().getStatusCode()==200) {
                HttpEntity entity= httpResponse.getEntity();
                InputStream is = entity.getContent();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] bys = new byte[1024];
                int len = 0;
                while((len = is.read(bys))!=-1){
                    baos.write(bys, 0, len);
                }
                return baos.toString();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        return null;
    }
}    
package com.example.day0328_xmlparse;

import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;


public class XmlUtils {
    //解析XML字符串
    public static List<String> parseXmlStr(String xmlStr){
        //XmlPullParser xp = Xml.newPullParser();
        try {
            List<String> list = new ArrayList<String>();
            XmlPullParserFactory factory =XmlPullParserFactory.newInstance();
            XmlPullParser xp = factory.newPullParser();
            //把字符串转换成字符输入流reader
            Reader in = new StringReader(xmlStr);
            //告诉解析器对象Xml在哪,初始化
            xp.setInput(in);
            //获取当前节点的时间类型
            int type = xp.getEventType();
            //定义一个开关
            boolean flag =false;
            while(true){
                if (type ==XmlPullParser.START_DOCUMENT) {
                    
                }else if(type==XmlPullParser.END_DOCUMENT){
                    break;
                }else if(type==XmlPullParser.START_TAG){
                    if("name".equals(xp.getName())){
                        flag=true;
                    }
                }else if(type == XmlPullParser.END_TAG){
                    flag =false;
                }else if(type == XmlPullParser.TEXT){
                    String text =xp.getText();
                    if(flag){
                        list.add(text);
                    }
                }
                /*xp.next();
                type = xp.getEventType();*/
                type = xp.next();
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

 

转载于:https://www.cnblogs.com/zcl1314/p/5328589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值