### xml部分是这样的 路径是 http://www.oschina.net/action/api/news_list 一定要加联网权限
<news><id>76426</id><title>MyBatis Ignite 1.0.2 发布,MyBatis 缓存插件</title><body>MyBatis Ignite 1.0.2 发布了,主要改进是升级至 Apache Ignite 1.7...</body><commentCount>1</commentCount><author>局长</author><authorid>2720166</authorid><pubDate>2016-08-23 11:49:41</pubDate><url/><newstype><type>0</type><authoruid2>2720166</authoruid2><eventurl/></newstype></news>
### 布局
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
### 适配器的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="title" />
<TextView
android:id="@+id/pubDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="pubDate" />
</RelativeLayout>
</LinearLayout>
### Activity
public class MainActivity extends ActionBarActivity {
private ListView lv;
List<Bean> list = new ArrayList<Bean>();
private Bean bean;
String path = "http://www.oschina.net/action/api/news_list";
// 创建handler
Handler handler = new Handler() {
public void handleMessage(Message msg) {
String xml = (String) msg.obj;
xml(xml);
// 添加适配器
lv.setAdapter(new MyAdapter(MainActivity.this, list));
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
// 从网络获取数据,用xUtils解析
HttpUtils httpUtils = new HttpUtils();
httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
String result = arg0.result;
Message msg = Message.obtain();
msg.obj = result;
handler.sendMessage(msg);
}
});
}
protected void xml(String xml) {
// 得到xml解析器
XmlPullParser newpuParser = Xml.newPullParser();
// 得到需要解析的输入流
InputStream is = new ByteArrayInputStream(xml.getBytes());
try {
newpuParser.setInput(new InputStreamReader(is));
// 得到事件类型
int eventType = newpuParser.getEventType();
// 只要文档没有结束,就一直读取
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
System.out.println("文档开始");
break;
case XmlPullParser.START_TAG:
String tagName = newpuParser.getName();
if (tagName.equals("news")) {
bean = new Bean();
// 读到id开始标签
} else if (tagName.equals("id")) {
// 得到标签里的文本
String nextText = newpuParser.nextText();
bean.setId(nextText);
System.out.println(nextText);
} else if (tagName.equals("title")) {
// 得到标签里的文本
String nextText = newpuParser.nextText();
bean.setTitle(nextText);
System.out.println(nextText);
} else if (tagName.equals("pubDate")) {
// 得到标签里的文本
String nextText = newpuParser.nextText();
bean.setPubDate(nextText);
System.out.println(nextText);
}
break;
// 读到了结束标签
case XmlPullParser.END_TAG:
// 得到结束标签的名字
tagName = newpuParser.getName();
if (tagName.equals("news")) {
// 添加到bean集合
list.add(bean);
}
break;
case XmlPullParser.END_DOCUMENT:
System.out.println("文档结束");
break;
}
// 得到下一个节点的类型
eventType = newpuParser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
### MyAdapter
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Bean> list;
public MyAdapter(Context context, List<Bean> list) {
this.context = context;
// TODO Auto-generated constructor stub
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(context, R.layout.list_item, null);
holder.id = (TextView) convertView.findViewById(R.id.id);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.pubDate = (TextView) convertView.findViewById(R.id.pubDate);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Bean bean = list.get(position);
holder.id.setText(bean.getId());
holder.title.setText(bean.getTitle());
holder.pubDate.setText(bean.getPubDate());
return convertView;
}
class ViewHolder {
private TextView id, title, pubDate;
}
}