private class GetDataTask extends AsyncTask<Void, Void, List<User>> {
@Override
protected List<User> doInBackground(Void... params) {
i++;
List<User> list=null;
XStream xStream = new XStream();
xStream.processAnnotations(Userss.class);
try {
Userss fromXML = (Userss) xStream.fromXML(new URL(uri));
list = fromXML.getNewslist().getNews();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return list;
}
@Override
protected void onPostExecute(List<User> result) {
adapter=new MyAdapter(getActivity(),result);//这个地方需要添加参数
actualListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
mPullRefreshListView.onRefreshComplete();
super.onPostExecute(result);
}
}
对于XML的解析 我们需要封装javabean 还需要添加注解下面我们写一个例子还看一下
这个是最里层的封装
public class User {
private String id;
private String title;
private String body;
private int commentCount;//评论的数量
private String author;//作者
private int authorid;
private String pubDate;
private String url;
private Us newstype;
//对属性进行封装
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 int getCommentCount() {
return commentCount;
}
public void setCommentCount(int commentCount) {
this.commentCount = commentCount;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getAuthorid() {
return authorid;
}
public void setAuthorid(int 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 Us getNewstype() {
return newstype;
}
public void setNewstype(Us newstype) {
this.newstype = newstype;
}
}
让我们看一下次外层的集合的封装 这个时候我们需要添加注解
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("newslist")//这个地方添加的名称不是固定的 这个是集合标签外面一层的标签
public class Users {
@XStreamImplicit(itemFieldName="news")//这个地方是我们呢集合的标签名称
private List<User> news;
public List<User> getNews() {
return news;
}
public void setNews(List<User> news) {
this.news = news;
}
}
//最后让我们看一下最外层的对象的封装 我们还是需要添加一个注解
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("oschina")//这个地方的名字也不是固定的 是根据我们的XML文件配合的最外层的标签名称
public class Userss {
private String catalog;
private String newsCount;
private String pagesize;
private Users newslist;
public String getCatalog() {
return catalog;
}
public void setCatalog(String catalog) {
this.catalog = catalog;
}
public String getNewsCount() {
return newsCount;
}
public void setNewsCount(String newsCount) {
this.newsCount = newsCount;
}
public String getPagesize() {
return pagesize;
}
public void setPagesize(String pagesize) {
this.pagesize = pagesize;
}
public Users getNewslist() {
return newslist;
}
public void setNewslist(Users newslist) {
this.newslist = newslist;
}
@Override
public String toString() {
return "Userss [catalog=" + catalog + ", newsCount=" + newsCount
+ ", pagesize=" + pagesize + ", newslist=" + newslist + "]";
}
}
上面这样就完成了我们Javabean的封装