Xml解析

来源:互联网 发布:淘宝巴巴爸爸是正品吗 编辑:程序博客网 时间:2024/06/05 05:13

这是Xml


MainActivity.java

package com.example.xmljiexi;import java.io.ByteArrayInputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.util.Xml;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import com.example.adapter.MyAdapter;import com.example.view.XListView;import com.example.view.XListView.IXListViewListener;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;public class MainActivity extends Activity implements IXListViewListener {public int index = 1;private String url = "http://www.oschina.net/action/api/tweet_list?pageIndex="+ index;private XListView xlv;private List<Bean> list;private ArrayList<Bean> newlist = new ArrayList<Bean>();private HttpUtils httpUtils;private Bean bean;private MyAdapter adapter;private String Tag = "刷新";private Handler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);xlv = (XListView) findViewById(R.id.xlv);xlv.setPullLoadEnable(true);xlv.setXListViewListener(this);httpUtils = new HttpUtils();handler = new Handler();// 请求数据inData(Tag);xlv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Intent intent = new Intent(MainActivity.this, SActivity.class);intent.putExtra("id", list.get(position - 1).id);startActivity(intent);finish();}});}private void setAdapter() {if (adapter == null) {adapter = new MyAdapter(this, newlist);xlv.setAdapter(adapter);} else {adapter.notifyDataSetChanged();}}private void inData(final String str) {httpUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {@Overridepublic void onFailure(HttpException arg0, String arg1) {}@Overridepublic void onSuccess(ResponseInfo<String> arg0) {String xml = arg0.result;ByteArrayInputStream mInputStream = new ByteArrayInputStream(xml.getBytes());try {XmlPullParser parser = Xml.newPullParser();parser.setInput(mInputStream, "utf-8");int event = parser.getEventType();Bean mxml = null;while (event != XmlPullParser.END_DOCUMENT) {String name = parser.getName();switch (event) {case XmlPullParser.START_DOCUMENT:list = new ArrayList<Bean>();break;case XmlPullParser.START_TAG:if ("tweet".equals(name)) {mxml = new Bean();} else if ("id".equals(name)) {mxml.setId(Integer.parseInt(parser.nextText()));} else if ("portrait".equals(name)) {mxml.setPortrait(parser.nextText());} else if ("author".equals(name)) {mxml.setAuthor(parser.nextText());} else if ("body".equals(name)) {mxml.setBody(parser.nextText());} else if ("pubDate".equals(name)) {mxml.setPubDate(parser.nextText());} else if ("imgSmall".equals(name)) {mxml.setImgSmall(parser.nextText());} else if ("imgBig".equals(name)) {mxml.setImgBig(parser.nextText());}break;case XmlPullParser.END_TAG:if ("tweet".equals(name)) {list.add(mxml);mxml = null;}break;case XmlPullParser.END_DOCUMENT:break;}event = parser.next();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}if (str.equals("刷新")) {newlist.addAll(0, list);} else {newlist.addAll(list);}setAdapter();}});}private void onLoad() {xlv.stopRefresh();xlv.stopLoadMore();xlv.setRefreshTime("刚刚");}@Overridepublic void onRefresh() {handler.postDelayed(new Runnable() {@Overridepublic void run() {index=index+1;Tag="刷新";inData(Tag);onLoad();}}, 2000);}@Overridepublic void onLoadMore() {handler.postDelayed(new Runnable() {@Overridepublic void run() {index=index+1;Tag="加载";inData(Tag);onLoad();}}, 2000);}}

Bean.java

package com.example.xmljiexi;public class Bean {public int id;public String portrait;public String author;public String body;public String pubDate;public String imgSmall;public String imgBig;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getPortrait() {return portrait;}public void setPortrait(String portrait) {this.portrait = portrait;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public String getPubDate() {return pubDate;}public void setPubDate(String pubDate) {this.pubDate = pubDate;}public String getImgSmall() {return imgSmall;}public void setImgSmall(String imgSmall) {this.imgSmall = imgSmall;}public String getImgBig() {return imgBig;}public void setImgBig(String imgBig) {this.imgBig = imgBig;}@Overridepublic String toString() {return "Bean [id=" + id + ", portrait=" + portrait + ", author="+ author + ", body=" + body + ", pubDate=" + pubDate+ ", imgSmall=" + imgSmall + ", imgBig=" + imgBig + "]";}}

MyAdapter.java

package com.example.adapter;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.app.ImageLoaderUtils;import com.example.view.RoundImageView;import com.example.xmljiexi.Bean;import com.example.xmljiexi.R;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;public class MyAdapter extends BaseAdapter {private Context context;private List<Bean> list;private DisplayImageOptions options;public MyAdapter(Context context, List<Bean> list) {this.context = context;this.list = list;options = ImageLoaderUtils.initOptions();}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = View.inflate(context, R.layout.item, null);RoundImageView portrait = (RoundImageView) view.findViewById(R.id.portrait);TextView author = (TextView) view.findViewById(R.id.author);TextView body = (TextView) view.findViewById(R.id.body);ImageView img = (ImageView) view.findViewById(R.id.img);//bitmapUtils.display(portrait, list.get(position).portrait);ImageLoader.getInstance().displayImage(list.get(position).portrait, portrait, options);author.setText(list.get(position).author);body.setText(list.get(position).body);//bitmapUtils.display(img, list.get(position).imgSmall);ImageLoader.getInstance().displayImage(list.get(position).portrait, img, options);return view;}}

<strong>ImageLoaderUtils.java缓存</strong>

package com.example.app;import com.example.xmljiexi.R;import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.assist.QueueProcessingType;import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import android.content.Context;import android.graphics.Bitmap;public class ImageLoaderUtils { public static void initConfiguration(Context context) { Builder configuration = new ImageLoaderConfiguration.Builder(context); configuration.memoryCacheExtraOptions(480, 800)  .diskCacheExtraOptions(480, 800, null)  // .taskExecutor(null)  // .taskExecutorForCachedImages()  .threadPoolSize(3)  // default 线程优先级  .threadPriority(Thread.NORM_PRIORITY - 2)  // default  .tasksProcessingOrder(QueueProcessingType.FIFO)  // // default设置在内存中缓存图像的多种尺寸  // 加载同一URL图片时,imageView从小变大时,从内存缓存中加载  .denyCacheImageMultipleSizesInMemory()  // 超过设定的缓存大小时,内存缓存的清除机制  .memoryCache(new LruMemoryCache(2 * 1024 * 1024))  // 内存的一个大小  .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)  // default 将图片信息缓存到该路径下  // default 磁盘缓存的大小  .diskCacheSize(50 * 1024 * 1024)  // 磁盘缓存文件的个数  .diskCacheFileCount(100)  // 磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new  // Md5FileNameGenerator()源文件的名称同过md5加密后保存  .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())  // 设置默认的图片加载  // 使用默认的图片解析器  .imageDecoder(new BaseImageDecoder(true)) // default  .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default  .writeDebugLogs(); ImageLoader.getInstance().init(configuration.build()); } public static DisplayImageOptions initOptions() {        DisplayImageOptions options = new DisplayImageOptions.Builder()            .showImageOnLoading(R.drawable.ic_launcher)            .showImageOnFail(R.drawable.ic_launcher)            .cacheInMemory(true)            .cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565)             // 是否考虑JPEG图像EXIF参数(旋转,翻转)            .considerExifParams(true)            // 设置图片以如何的编码方式显示            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)            // 设置图片的解码类型//            .bitmapConfig(Bitmap.Config.RGB_565)            // 设置图片在下载前是否重置,复位            .resetViewBeforeLoading(true)            // 是否设置为圆角,弧度为多少            .displayer(new RoundedBitmapDisplayer(20))            // 是否图片加载好后渐入的动画时间            .displayer(new FadeInBitmapDisplayer(100))            // 构建完成             .build();        return options;        }}

MyApplication.java 



package com.example.app;import android.app.Application;public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();ImageLoaderUtils.initConfiguration(getApplicationContext());}}

SActivity.java

package com.example.xmljiexi;import java.io.ByteArrayInputStream;import org.xmlpull.v1.XmlPullParser;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Xml;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.example.app.ImageLoaderUtils;import com.example.view.RoundImageView;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.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;public class SActivity extends Activity {private int index;private RoundImageView portrait;private TextView author;private TextView pubDate;private TextView body;private ImageView img;private BitmapUtils bitmapUtils;private HttpUtils httpUtils;private String url="http://www.oschina.net/action/api/tweet_detail?id=";private Bean bean;private DisplayImageOptions options;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_s);Intent intent = getIntent();index = intent.getIntExtra("id", 0);options = ImageLoaderUtils.initOptions();portrait = (RoundImageView) findViewById(R.id.portrait);author = (TextView) findViewById(R.id.author);pubDate = (TextView) findViewById(R.id.pubDate);body = (TextView) findViewById(R.id.body);img = (ImageView) findViewById(R.id.img);bitmapUtils = new BitmapUtils(this);httpUtils = new HttpUtils();inData();}private void inData() {httpUtils.send(HttpMethod.GET, url+index, new RequestCallBack<String>() {@Overridepublic void onFailure(HttpException arg0, String arg1) {Toast.makeText(SActivity.this, "网络请求失败", 0).show();}@Overridepublic void onSuccess(ResponseInfo<String> arg0) {String string=arg0.result;ByteArrayInputStream inputStream = new ByteArrayInputStream(string.getBytes());XmlPullParser parser = Xml.newPullParser();try {parser.setInput(inputStream, "utf-8");int type = parser.getEventType();while(type!=XmlPullParser.END_DOCUMENT){String name=parser.getName();switch (type) {case XmlPullParser.START_TAG:if("tweet".equals(name)){bean=new Bean();}else if("id".equals(name)){bean.id=Integer.parseInt(parser.nextText());}else if("portrait".equals(name)){bean.portrait=parser.nextText();}else if("author".equals(name)){bean.author=parser.nextText();}else if("body".equals(name)){bean.body=parser.nextText();}else if("pubDate".equals(name)){bean.pubDate=parser.nextText();}else if("imgBig".equals(name)){bean.imgBig=parser.nextText();}break;}type=parser.next();}} catch (Exception e) {e.printStackTrace();}//bitmapUtils.display(portrait, bean.portrait);ImageLoader.getInstance().displayImage(bean.portrait, portrait, options);author.setText(bean.author);body.setText(bean.body);pubDate.setText(bean.pubDate);//bitmapUtils.display(img, bean.imgBig);ImageLoader.getInstance().displayImage(bean.imgBig, img, options);}});}}





1 0
原创粉丝点击