关闭

XMl解析

标签: xml
15人阅读 评论(0) 收藏 举报
分类:
package com.my.test2;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

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

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.my.test2.bean.Tweet;
import com.my.test2.utils.NetUtils;
import com.my.test2.view.XListView;
import com.my.test2.view.XListView.IXListViewListener;

public class MainActivity extends Activity implements IXListViewListener{

    private XmlPullParser parser;

    private List<Tweet> list=null;
    
    private XListView xlv;
    private int count=0;

    private MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list=new ArrayList<Tweet>();
        
        xlv = (XListView) findViewById(R.id.xlv);
        xlv.setPullLoadEnable(true);
        xlv.setPullRefreshEnable(true);
        
        
        getData(0);
        
        xlv.setXListViewListener(this);
        
        xlv.setOnItemClickListener(new OnItemClickListener() {

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

    private void getData(int pageIndex) {
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+pageIndex, new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                
                parseXml(result);
                
                adapter = new MyAdapter();
                xlv.setAdapter(adapter);
        
            }

        });
    }
    
    private void parseXml(String result) {
        try {
            parser = Xml.newPullParser();
            ByteArrayInputStream bais=new ByteArrayInputStream(result.getBytes("utf-8"));
            parser.setInput(bais,"utf-8");
            int eventType = parser.getEventType();
            
            Tweet tweet=null;
            while (eventType!=XmlPullParser.END_DOCUMENT) {
                String name = parser.getName();
                switch (eventType) {
                case XmlPullParser.START_TAG:
                    
                    if("tweet".equals(name)){
                        tweet=new Tweet();
                    }else if("id".equals(name)){
                        tweet.id=parser.nextText();
                    }else if("portrait".equals(name)){
                        tweet.portrait=parser.nextText();
                    }else if("author".equals(name)){
                        tweet.author=parser.nextText();
                    }else if("body".equals(name)){
                        tweet.body=parser.nextText();
                    }else if("imgSmall".equals(name)){
                        tweet.imgSmall=parser.nextText();
                    }else if("imgBig".equals(name)){
                        tweet.imgBig=parser.nextText();
                    }else if("pubDate".equals(name)){
                        tweet.pubDate=parser.nextText();
                    }
                    
                    
                    break;
                case XmlPullParser.END_TAG:
                    if("tweet".equals(name)){
                        list.add(tweet);
                    }
                    break;
                    
                }
                eventType=parser.next();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private void onLoad(){
        xlv.stopLoadMore();
        xlv.stopRefresh();
        xlv.setRefreshTime("ธีธี");
        
    }

    @Override
    public void onRefresh() {
        list.clear();
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+0, new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                
                parseXml(result);
                
//                adapter = new MyAdapter();
//                xlv.setAdapter(adapter);
                
                adapter.notifyDataSetChanged();
                onLoad();
                count=0;
        
            }

        });
        
    }

    @Override
    public void onLoadMore() {
        HttpUtils http = new HttpUtils();
        http.configCurrentHttpCacheExpiry(1000*5);
        http.send(HttpMethod.GET, NetUtils.PATH_LIST+(++count), new RequestCallBack<String>() {

        
            @Override
            public void onFailure(HttpException arg0, String arg1) {}

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                String result=arg0.result;
                parseXml(result);
                adapter.notifyDataSetChanged();
                onLoad();
        
            }
        });
        
    }
    
    private class MyAdapter extends BaseAdapter{
        public MyAdapter() {
            
        }
        
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder=null;
            if(convertView==null){
                holder=new ViewHolder();
                convertView=View.inflate(MainActivity.this, R.layout.xlv_item, null);
                
                holder.item_portrait=(ImageView) convertView.findViewById(R.id.item_portrait);
                holder.item_author=(TextView) convertView.findViewById(R.id.item_author);
                holder.item_title=(TextView) convertView.findViewById(R.id.item_title);
                holder.item_img=(ImageView) convertView.findViewById(R.id.item_img);
                
                convertView.setTag(holder);
            }else{
            holder=    (ViewHolder) convertView.getTag();
            }
            
            BitmapUtils utils = new BitmapUtils(MainActivity.this);
            utils.display(holder.item_portrait, list.get(position).portrait);
            holder.item_author.setText(list.get(position).author+"");
            holder.item_title.setText(list.get(position).body+"");
            if(list.get(position).imgSmall!=null){
                holder.item_img.setVisibility(View.VISIBLE);
                utils.display(holder.item_img, list.get(position).imgSmall);
                
            }else{
                holder.item_img.setVisibility(View.GONE);
            }
            
            return convertView;
        }
        
    }
    
    static class ViewHolder{
        private ImageView item_portrait;
        private TextView item_title;
        private TextView item_author;
        private ImageView item_img;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55次
    • 积分:22
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行