首先让我们看一下布局中的代码 我们只是使用一个listView来展示
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<ListView
android:id="@+id/list_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
</RelativeLayout>
然后我们需要根据我们请求的XML数据封装javabean
再下一步我们需要实现控件 也就是我们主类中的方法 我们要请求网络 拿到数据 解析出来保存到集合 添加到适配器展示 最后达到我们的一个效果 下面看一下我们怎么请求网络解析的吧
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.bwie.type.Types;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private List<Types> types=null;
private Types type=null;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView) findViewById(R.id.list_main);
new MyAsycnack().execute();
}
public class MyAsycnack extends AsyncTask<String, Integer, InputStream>{
@Override
protected InputStream doInBackground(String... params) {
InputStream inputStream = null;
try {
URL url=new URL("http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml");
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
connection.connect();
if(connection.getResponseCode()==200){
Log.i("aaa", 123+"0");
inputStream = connection.getInputStream();
Log.i("aaa", inputStream.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return inputStream;
}
@Override
protected void onPostExecute(final InputStream result) {
super.onPostExecute(result);
getXmlString(result);
}
}
public void getXmlString(InputStream stream){
try {
String tagName="";
XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullFactory.newPullParser();
parser.setInput(stream, "UTF-8");
int eventType = parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
types=new ArrayList<Types>();
break;
case XmlPullParser.START_TAG:
tagName=parser.getName();
if(tagName.equals("item")){
type=new Types();
}
if(tagName.equals("catalog")){
type.setType(parser.nextText());
}else if(tagName.equals("id")){
type.setId(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if(parser.getName().equals("item")){
types.add(type);
Log.i("aaa", types.toString());
}
tagName="";
List<String> list=new ArrayList<String>();
for(int i=0;i<types.size();i++){
list.add(types.get(i).getType());
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.list_type,R.id.tv_type,list);
listView.setAdapter(adapter);
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我们使用的是ArrayAdapter 因为数据只是单排的显示 。
不要忘记添加链接网络的权限了。