解析从网路上面请求来的xml并用XListView展示:封装类
import java.io.Serializable;
import com.thoughtworks.xstream.annotations.XStreamAlias;
public class News implements Serializable{
public String id;
public String title;
public String body;
public String commentCount;
public String author;
public String authorid;
public String pubDate;
public String url;
@XStreamAlias("newstype")
public Newstype newstype;
public class Newstype{
public String type;
public String authoruid2;
public String eventurl;
public String attachment;
}
}
import java.io.Serializable;
import java.util.ArrayList;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("oschina")
public class Bean implements Serializable{
public String catalog;
public String newsCount;
public String pagesize;
@XStreamAlias("newslist")
public Newslist newslist;
public class Newslist{
@XStreamImplicit(itemFieldName="news")
public ArrayList<News> news;
}
}
package com.example.yuekao;
public class BeanList {
private String id;
private String title;
private String body;
private String commentCount;
private String author;
private String authorid;
private String pubDate;
private String url;
private String type;
private String authoruid2;
private String eventurl;
private String attachment;
@Override
public String toString() {
return "BeanList [id=" + id + ", title=" + title + ", body=" + body
+ ", commentCount=" + commentCount + ", author=" + author
+ ", authorid=" + authorid + ", pubDate=" + pubDate + ", url="
+ url + ", type=" + type + ", authoruid2=" + authoruid2
+ ", eventurl=" + eventurl + ", attachment=" + attachment + "]";
}
public BeanList(String id, String title, String body, String commentCount,
String author, String authorid, String pubDate, String url,
String type, String authoruid2, String eventurl, String attachment) {
super();
this.id = id;
this.title = title;
this.body = body;
this.commentCount = commentCount;
this.author = author;
this.authorid = authorid;
this.pubDate = pubDate;
this.url = url;
this.type = type;
this.authoruid2 = authoruid2;
this.eventurl = eventurl;
this.attachment = attachment;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getCommentCount() {
return commentCount;
}
public void setCommentCount(String commentCount) {
this.commentCount = commentCount;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getAuthorid() {
return authorid;
}
public void setAuthorid(String authorid) {
this.authorid = authorid;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getAuthoruid2() {
return authoruid2;
}
public void setAuthoruid2(String authoruid2) {
this.authoruid2 = authoruid2;
}
public String getEventurl() {
return eventurl;
}
public void setEventurl(String eventurl) {
this.eventurl = eventurl;
}
public String getAttachment() {
return attachment;
}
public void setAttachment(String attachment) {
this.attachment = attachment;
}
}
Mainactivity中:
package com.example.yuekao;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
private ViewPager viewPager;
private String [] Title=new String []{"咨讯","热点","博客","推荐"};
private com.viewpagerindicator.TabPageIndicator pageIndicator;
private String [] url=new String []{"http://www.oschina.net/action/api/news_list",
"http://www.oschina.net/action/api/news_list?show=week",
"http://www.oschina.net/action/api/blog_list?type=latest",
"http://www.oschina.net/action/api/blog_list?type=recommend"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentPagerAdapter adapter=new TabPageIndicator(getSupportFragmentManager());
viewPager=(ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
pageIndicator=(com.viewpagerindicator.TabPageIndicator)findViewById(R.id.tabpager);
pageIndicator.setViewPager(viewPager);
}
class TabPageIndicator extends FragmentPagerAdapter{
public TabPageIndicator(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
Fragment fragment=new MyFragment(url,arg0);
return fragment;
}
@Override
public CharSequence getPageTitle(int position) {
return Title[position%Title.length];
}
@Override
public int getCount() {
return Title.length;
}
}
}
Myadapter:
package com.example.yuekao;
import java.util.List;
import android.content.Context;
import android.content.pm.LabeledIntent;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class Myadapter extends BaseAdapter {
private List<BeanList> listt;
private Context context;
public Myadapter(Context context, List<BeanList> listt) {
// TODO Auto-generated constructor stub
this.context=context;
this.listt=listt;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listt.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return listt.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewholder;
if(convertView==null){
viewholder=new ViewHolder();
convertView=LayoutInflater.from(context).inflate(R.layout.item,null);
viewholder.tv_title=(TextView) convertView.findViewById(R.id.tv_title);
viewholder.tv_content=(TextView) convertView.findViewById(R.id.tv_content);
convertView.setTag(viewholder);
}else{
viewholder=(ViewHolder) convertView.getTag();
}
viewholder.tv_title.setText(listt.get(position).getTitle());
viewholder.tv_content.setText(listt.get(position).getBody());
return convertView;
}
class ViewHolder{
TextView tv_title;
TextView tv_content;
}
}
MyFragment:
package com.example.yuekao;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.yuekao.Bean.Newslist;
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.thoughtworks.xstream.XStream;
public class MyFragment extends Fragment implements IXListViewListener{
private ArrayList<Newslist> list;
private int position;
private String[] urll;
private List<BeanList> listt=new ArrayList<BeanList>();
private String uu="http://www.oschina.net/action/api/news_list";
private View view;
private int start = 0;
private Myadapter adapter;
private static int refreshCnt = 0;
private XListView xlistview;
private MainActivity mainActivity;
private Handler mHandler;
public MyFragment(String[] url, int position) {
this.urll=url;
this.position=position;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.myfragment,container,false);
xlistview = (XListView) view.findViewById(R.id.listview);
mainActivity = (MainActivity) getActivity();
xlistview.setPullLoadEnable(true); //上拉加载默认为false
xlistview.setPullRefreshEnable(true);//下拉刷新默认为true
xlistview.setXListViewListener(this);
mHandler = new Handler();
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getXml();
}
protected void getXml() {
HttpUtils httputils=new HttpUtils();
httputils.configResponseTextCharset("utf-8");
httputils.send(HttpMethod.POST, uu,new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Log.i("::::::::::::::::::::::::::::::::",result);
XStream xStream=new XStream();
xStream.processAnnotations(Bean.class);
Bean xml = (Bean) xStream.fromXML(result);
ArrayList<News> news = xml.newslist.news;
for (News n : news) {
String author = n.author;
String authorid = n.authorid;
String body = n.body;
String commentCount = n.commentCount;
String id = n.id;
String title = n.title;
String pubDate = n.pubDate;
String url = n.url;
String attachment = n.newstype.attachment;
String authoruid2 = n.newstype.authoruid2;
String eventurl = n.newstype.eventurl;
String type = n.newstype.type;
listt.add(new BeanList(id, title, body, commentCount, author, authorid, pubDate, url, type, authoruid2, eventurl, attachment));
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new Myadapter(getActivity(),listt);
xlistview.setAdapter(adapter);
}
});
}
});
}
@Override
public void onRefresh() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
start = ++refreshCnt;
geneItems();
adapter.notifyDataSetChanged();
onLoad();/*设置头部刷新时间*/
//为了获得上次刷新时间,不用下面新建mAdapter
}
}, 2000);
}
protected void geneItems() {
getXml();
}
@Override
public void onLoadMore() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String nowTime=df.format(new Date(System.currentTimeMillis()));// 获取当前系统时间
xlistview.setRefreshTime(nowTime);//释放时提示正在刷新时的当前时间
}
/*设置头部刷新时间*/
private void onLoad() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String nowTime=df.format(new Date(System.currentTimeMillis()));// 获取当前系统时间
xlistview.setRefreshTime(nowTime);//释放时提示正在刷新时的当前时间
}
}
主页面配置:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/tabpager"
android:background="@drawable/base_action_bar_bg"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
一切ok!