Android中XML解析之XMLPullParser解析
2015-08-26 08:48
585 查看
XML解析包含几种方式,本文介绍XML解析之XMLPullParser解析。该解析主要用到XMLPullParser类。下面首先对该类进行讨论,然后举出一个使用实例。
注意XmlPullParser是一个接口,也就是说我们不能直接通过new
来得到它的一个实例。那怎么办呢?它有一个工厂类XMLPullParserFactory,可以用来获得XMLPullParser类类型的对象。也就是说,使用XmlPullParser解析实际上使用了简单工厂的设计模式。并且在得到XmlPullParser对象时,还使用了反射机制。具体的来看类图结构:
可见客户端拥有一个XMLPullParserFactory实例,该类自身也简化的工厂模式设计,即自己创建自己的实例,它并没有公共的构造器,从源码中可以看到其构造器只具有包访问权限(protected
XmlPullParserFactory())【当然,采用工厂模式设计的好处是不用说的,如果不知可以看设计模式部分,这里不重点说了!】。同时XMLPullParserFactory的newPullParser()也不是通过new
XmlPullParser()【这是不可能的,前面说了XmlPullParser是接口类型的】来得到XmlPullParser。在XmlPullParserFactory的构造器中通过Class.forName("org.kxml2.io.KXmlParser")得到KXmlParser类,在调用newPullParser()时,通过Class类的newInstance()(public
TnewInstance())来获得KXmlParser类的实例。KXmlParser类本身并没有构造器。【其实从这儿可以看出,我们获得一个类的实例的两条途径(并不只有new一种方式哦)】
上面对使用XMLPullParser解析XML的两个类的设计架构做了探讨。接下来我们再看看实际的使用。
1
获取XMLPullParser类型的对象
2
获取要解析的XML文件,XMLPullParser提供了两个方法以不同的形式获得:
setInput(Reader in) 可以接收缓冲好的字符串等
setInput(InputStream inputStream, String inputEncoding)
直接以字节输入流处理,并指定编码集
3
得到事件类型通过
getEventType() 或next()
或nextToken() [next()和nextToken()的区别是对值为空白标签的处理方式不同,next()会做忽略处理]
4
通过一个while循环来判断正在解析的是哪一类标签【文档开始START_DOCUMENT
,标签开始START_TAG
,
文本TEXT
,结束标签END_TAG
,文档结束
END_DOCUMENT】
5
判断标签的含义,即获得标签的名字,通过getName()做判断,以获取我们想要内容,并可以把它还原成对象。
6
循环结束后,将setInput方法置为空,以释放其所占有的缓冲区。编写更有效率的程序。
7通过以上步骤解析就完成了。接下来就是显示的工作,显示的方式是多种多样的。
下面是一个具体的例子:
通过网络访问Apache服务器上的myxml.xml文件【不会搭服务器的可以看搭建集群中的博文】,并用一个ListView显示。
MainActivity.java代码:
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
importorg.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activityimplements OnClickListener {
//declare member variation
privateButton mObtain;
privateButton mPull;
privateTextView mTvShowObtain;
privateListView mLvPull;
privateString mResult = null;
privatestatic final int OBTAIN_XML_FAIL = 0;
privatestatic final int OBTAIN_XML_SUCCESS = 1;
privatestatic final int PULL_XML_SUCCESS = 2;
privatestatic final int PULL_XML_FAIL = 3;
privatestatic final String FAIL_MESSAGE = "获取XML文件失败";
privateList<App> list;
privateHandler mHandler = new Handler() {
publicvoid handleMessage(android.os.Message msg) {
switch(msg.what) {
caseOBTAIN_XML_FAIL:// 获取XML失败
mTvShowObtain.setText(FAIL_MESSAGE);
break;
caseOBTAIN_XML_SUCCESS:// 获取XML成功
mTvShowObtain.setText(mResult);
break;
casePULL_XML_SUCCESS:// 解析XML成功
System.out.println(list.size()+ "");
for(int i = 0; i < 4; i++) {
System.out.println(list.get(i).getId());
}
showParserContent();
break;
}
}
privatevoid showParserContent() {
mLvPull.setAdapter(newAppAdapter(MainActivity.this, list));
};
};
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mObtain= (Button) findViewById(R.id.mainAc_btn_Obtain);
mPull= (Button) findViewById(R.id.mainAc_btn_Pull);
mTvShowObtain= (TextView) findViewById(R.id.mainAc_tv_showContent);
mLvPull= (ListView) findViewById(R.id.mainAc_lv_showPullParserContent);
mObtain.setOnClickListener(this);
mPull.setOnClickListener(this);
}
@Override
publicvoid onClick(View v) {
switch(v.getId()) {
caseR.id.mainAc_btn_Obtain:
//在子线程中,获取服务器上的xml文件
newThread(new Runnable() {
@Override
publicvoid run() {
mResult= getXML();
//发送handler处理消息
if(mResult == null || "".equals(mResult)) {
mHandler.sendEmptyMessage(0);
}else {
mHandler.sendEmptyMessage(1);
}
}
}).start();
break;
caseR.id.mainAc_btn_Pull:
parserXML();
mHandler.sendEmptyMessage(2);
break;
}
}
privatevoid parserXML() {
if(mResult == null) {
newThread(new Runnable() {
@Override
publicvoid run() {
mResult= getXML();
}
}).start();
}
try{
//解析器采用工厂模式设计根据源码看出使用的是多例模式
//获得XML PullParser解析器工厂
XmlPullParserFactoryxmlPullParserFactory = XmlPullParserFactory
.newInstance();
XmlPullParserxmlPullParser = xmlPullParserFactory.newPullParser();
xmlPullParser.setInput(newStringReader(mResult));
list= new ArrayList<App>();
Appapp = null;
while(xmlPullParser.getEventType() != XmlPullParser.END_DOCUMENT) {
try{
switch(xmlPullParser.getEventType()) {
caseXmlPullParser.START_DOCUMENT:
break;
caseXmlPullParser.START_TAG:
if(xmlPullParser.getName().equals("app")) {
app= new App();
}else if (xmlPullParser.getName().equals("id")) {
app.setId(xmlPullParser.nextText());
}else if (xmlPullParser.getName().equals("name")) {
app.setName(xmlPullParser.nextText());
}else if (xmlPullParser.getName().equals("version")) {
app.setVersion(xmlPullParser.nextText());
}
break;
caseXmlPullParser.END_TAG:
if(xmlPullParser.getName().equals("app")) {
list.add(app);
}
break;
}
xmlPullParser.next();
}catch (IOException e) {
e.printStackTrace();
}
}
}catch (XmlPullParserException e) {
e.printStackTrace();
}
}
//获取服务器上的xml文件的方法
publicString getXML() {
Stringresult = null;
//注意,这儿的ip必须是IPv4地址,不能是Localhost
或127.0.0.1
HttpGethttpGet = new HttpGet("http://192.168.15.196/app.xml");
//实例化HttpClient对象
HttpClienthttpClient = new DefaultHttpClient();
//连接
try{
HttpResponsehttpResponse = httpClient.execute(httpGet);
Log.v("code",httpResponse.getStatusLine().getStatusCode() + "");
//判断是否连接成功
if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
//获取Http连接实例
HttpEntityhttpEntity = httpResponse.getEntity();
//获取数据
result= EntityUtils.toString(httpEntity, "UTF-8");
}
}catch (ClientProtocolException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
httpClient.getConnectionManager().shutdown();
}
returnresult;
}
}
main_activity.xml代码:
<LinearLayout
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"
android:orientation="vertical"
tools:context=".MainActivity"
>
<Button
android:id="@+id/mainAc_btn_Obtain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取XML文件"
/>
<TextView
android:id="@+id/mainAc_tv_showContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scrollbars="vertical"
android:text="SADF"
/>
<Button
android:id="@+id/mainAc_btn_Pull"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pull解析获取的XML文件"
/>
<ListView
android:id="@+id/mainAc_lv_showPullParserContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</ListView>
</LinearLayout>
item_mainactivity_layout.xml项布局:
<?xml
version="1.0"encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id:"
/>
<TextView
android:id="@+id/item_mainAc_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name:"
/>
<TextView
android:id="@+id/item_mainAc_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="version:"
/>
<TextView
android:id="@+id/item_mainAc_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
App.java(bean类)代码:
import java.io.Serializable;
public
classApp
implementsSerializable {
private String
id;
private String
name;
private String
version;
public App() {
}
public App(String id, Stringname, String version) {
this.id
= id;
this.name
= name;
this.version
= version;
}
public String getId() {
return
id;
}
public
void setId(String id) {
this.id
= id;
}
public String getName() {
return
name;
}
public
void setName(String name) {
this.name
= name;
}
public String getVersion() {
return
version;
}
public
void setVersion(Stringversion) {
this.version
= version;
}
}
AppAdapter.java代码:
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class AppAdapter extends BaseAdapter{
privateContext mCtx;
privateList<App> mList;
privateLayoutInflater mInflater;
publicAppAdapter(Context context, List<App> list) {
mCtx= context;
mList= list;
}
@Override
publicint getCount() {
returnmList.size();
}
@Override
publicObject getItem(int position) {
returnmList.get(position);
}
@Override
publiclong getItemId(int position) {
returnposition;
}
@Override
publicView getView(int position, View convertView, ViewGroup parent) {
mInflater= LayoutInflater.from(mCtx);
convertView= mInflater.inflate(R.layout.item_mainactivity_layout,
parent,false);
TextViewid = (TextView) convertView.findViewById(R.id.item_mainAc_id);
TextViewname = (TextView) convertView
.findViewById(R.id.item_mainAc_name);
TextViewversion = (TextView) convertView
.findViewById(R.id.item_mainAc_version);
id.setText(mList.get(position).getId());
name.setText(mList.get(position).getName());
version.setText(mList.get(position).getVersion());
returnconvertView;
}
}
最后,记得加网络权限。
注意XmlPullParser是一个接口,也就是说我们不能直接通过new
来得到它的一个实例。那怎么办呢?它有一个工厂类XMLPullParserFactory,可以用来获得XMLPullParser类类型的对象。也就是说,使用XmlPullParser解析实际上使用了简单工厂的设计模式。并且在得到XmlPullParser对象时,还使用了反射机制。具体的来看类图结构:
可见客户端拥有一个XMLPullParserFactory实例,该类自身也简化的工厂模式设计,即自己创建自己的实例,它并没有公共的构造器,从源码中可以看到其构造器只具有包访问权限(protected
XmlPullParserFactory())【当然,采用工厂模式设计的好处是不用说的,如果不知可以看设计模式部分,这里不重点说了!】。同时XMLPullParserFactory的newPullParser()也不是通过new
XmlPullParser()【这是不可能的,前面说了XmlPullParser是接口类型的】来得到XmlPullParser。在XmlPullParserFactory的构造器中通过Class.forName("org.kxml2.io.KXmlParser")得到KXmlParser类,在调用newPullParser()时,通过Class类的newInstance()(public
TnewInstance())来获得KXmlParser类的实例。KXmlParser类本身并没有构造器。【其实从这儿可以看出,我们获得一个类的实例的两条途径(并不只有new一种方式哦)】
上面对使用XMLPullParser解析XML的两个类的设计架构做了探讨。接下来我们再看看实际的使用。
1
获取XMLPullParser类型的对象
2
获取要解析的XML文件,XMLPullParser提供了两个方法以不同的形式获得:
setInput(Reader in) 可以接收缓冲好的字符串等
setInput(InputStream inputStream, String inputEncoding)
直接以字节输入流处理,并指定编码集
3
得到事件类型通过
getEventType() 或next()
或nextToken() [next()和nextToken()的区别是对值为空白标签的处理方式不同,next()会做忽略处理]
4
通过一个while循环来判断正在解析的是哪一类标签【文档开始START_DOCUMENT
,标签开始START_TAG
,
文本TEXT
,结束标签END_TAG
,文档结束
END_DOCUMENT】
5
判断标签的含义,即获得标签的名字,通过getName()做判断,以获取我们想要内容,并可以把它还原成对象。
6
循环结束后,将setInput方法置为空,以释放其所占有的缓冲区。编写更有效率的程序。
7通过以上步骤解析就完成了。接下来就是显示的工作,显示的方式是多种多样的。
下面是一个具体的例子:
通过网络访问Apache服务器上的myxml.xml文件【不会搭服务器的可以看搭建集群中的博文】,并用一个ListView显示。
MainActivity.java代码:
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
importorg.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activityimplements OnClickListener {
//declare member variation
privateButton mObtain;
privateButton mPull;
privateTextView mTvShowObtain;
privateListView mLvPull;
privateString mResult = null;
privatestatic final int OBTAIN_XML_FAIL = 0;
privatestatic final int OBTAIN_XML_SUCCESS = 1;
privatestatic final int PULL_XML_SUCCESS = 2;
privatestatic final int PULL_XML_FAIL = 3;
privatestatic final String FAIL_MESSAGE = "获取XML文件失败";
privateList<App> list;
privateHandler mHandler = new Handler() {
publicvoid handleMessage(android.os.Message msg) {
switch(msg.what) {
caseOBTAIN_XML_FAIL:// 获取XML失败
mTvShowObtain.setText(FAIL_MESSAGE);
break;
caseOBTAIN_XML_SUCCESS:// 获取XML成功
mTvShowObtain.setText(mResult);
break;
casePULL_XML_SUCCESS:// 解析XML成功
System.out.println(list.size()+ "");
for(int i = 0; i < 4; i++) {
System.out.println(list.get(i).getId());
}
showParserContent();
break;
}
}
privatevoid showParserContent() {
mLvPull.setAdapter(newAppAdapter(MainActivity.this, list));
};
};
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mObtain= (Button) findViewById(R.id.mainAc_btn_Obtain);
mPull= (Button) findViewById(R.id.mainAc_btn_Pull);
mTvShowObtain= (TextView) findViewById(R.id.mainAc_tv_showContent);
mLvPull= (ListView) findViewById(R.id.mainAc_lv_showPullParserContent);
mObtain.setOnClickListener(this);
mPull.setOnClickListener(this);
}
@Override
publicvoid onClick(View v) {
switch(v.getId()) {
caseR.id.mainAc_btn_Obtain:
//在子线程中,获取服务器上的xml文件
newThread(new Runnable() {
@Override
publicvoid run() {
mResult= getXML();
//发送handler处理消息
if(mResult == null || "".equals(mResult)) {
mHandler.sendEmptyMessage(0);
}else {
mHandler.sendEmptyMessage(1);
}
}
}).start();
break;
caseR.id.mainAc_btn_Pull:
parserXML();
mHandler.sendEmptyMessage(2);
break;
}
}
privatevoid parserXML() {
if(mResult == null) {
newThread(new Runnable() {
@Override
publicvoid run() {
mResult= getXML();
}
}).start();
}
try{
//解析器采用工厂模式设计根据源码看出使用的是多例模式
//获得XML PullParser解析器工厂
XmlPullParserFactoryxmlPullParserFactory = XmlPullParserFactory
.newInstance();
XmlPullParserxmlPullParser = xmlPullParserFactory.newPullParser();
xmlPullParser.setInput(newStringReader(mResult));
list= new ArrayList<App>();
Appapp = null;
while(xmlPullParser.getEventType() != XmlPullParser.END_DOCUMENT) {
try{
switch(xmlPullParser.getEventType()) {
caseXmlPullParser.START_DOCUMENT:
break;
caseXmlPullParser.START_TAG:
if(xmlPullParser.getName().equals("app")) {
app= new App();
}else if (xmlPullParser.getName().equals("id")) {
app.setId(xmlPullParser.nextText());
}else if (xmlPullParser.getName().equals("name")) {
app.setName(xmlPullParser.nextText());
}else if (xmlPullParser.getName().equals("version")) {
app.setVersion(xmlPullParser.nextText());
}
break;
caseXmlPullParser.END_TAG:
if(xmlPullParser.getName().equals("app")) {
list.add(app);
}
break;
}
xmlPullParser.next();
}catch (IOException e) {
e.printStackTrace();
}
}
}catch (XmlPullParserException e) {
e.printStackTrace();
}
}
//获取服务器上的xml文件的方法
publicString getXML() {
Stringresult = null;
//注意,这儿的ip必须是IPv4地址,不能是Localhost
或127.0.0.1
HttpGethttpGet = new HttpGet("http://192.168.15.196/app.xml");
//实例化HttpClient对象
HttpClienthttpClient = new DefaultHttpClient();
//连接
try{
HttpResponsehttpResponse = httpClient.execute(httpGet);
Log.v("code",httpResponse.getStatusLine().getStatusCode() + "");
//判断是否连接成功
if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
//获取Http连接实例
HttpEntityhttpEntity = httpResponse.getEntity();
//获取数据
result= EntityUtils.toString(httpEntity, "UTF-8");
}
}catch (ClientProtocolException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
httpClient.getConnectionManager().shutdown();
}
returnresult;
}
}
main_activity.xml代码:
<LinearLayout
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"
android:orientation="vertical"
tools:context=".MainActivity"
>
<Button
android:id="@+id/mainAc_btn_Obtain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取XML文件"
/>
<TextView
android:id="@+id/mainAc_tv_showContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scrollbars="vertical"
android:text="SADF"
/>
<Button
android:id="@+id/mainAc_btn_Pull"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Pull解析获取的XML文件"
/>
<ListView
android:id="@+id/mainAc_lv_showPullParserContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</ListView>
</LinearLayout>
item_mainactivity_layout.xml项布局:
<?xml
version="1.0"encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id:"
/>
<TextView
android:id="@+id/item_mainAc_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name:"
/>
<TextView
android:id="@+id/item_mainAc_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="version:"
/>
<TextView
android:id="@+id/item_mainAc_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
App.java(bean类)代码:
import java.io.Serializable;
public
classApp
implementsSerializable {
private String
id;
private String
name;
private String
version;
public App() {
}
public App(String id, Stringname, String version) {
this.id
= id;
this.name
= name;
this.version
= version;
}
public String getId() {
return
id;
}
public
void setId(String id) {
this.id
= id;
}
public String getName() {
return
name;
}
public
void setName(String name) {
this.name
= name;
}
public String getVersion() {
return
version;
}
public
void setVersion(Stringversion) {
this.version
= version;
}
}
AppAdapter.java代码:
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class AppAdapter extends BaseAdapter{
privateContext mCtx;
privateList<App> mList;
privateLayoutInflater mInflater;
publicAppAdapter(Context context, List<App> list) {
mCtx= context;
mList= list;
}
@Override
publicint getCount() {
returnmList.size();
}
@Override
publicObject getItem(int position) {
returnmList.get(position);
}
@Override
publiclong getItemId(int position) {
returnposition;
}
@Override
publicView getView(int position, View convertView, ViewGroup parent) {
mInflater= LayoutInflater.from(mCtx);
convertView= mInflater.inflate(R.layout.item_mainactivity_layout,
parent,false);
TextViewid = (TextView) convertView.findViewById(R.id.item_mainAc_id);
TextViewname = (TextView) convertView
.findViewById(R.id.item_mainAc_name);
TextViewversion = (TextView) convertView
.findViewById(R.id.item_mainAc_version);
id.setText(mList.get(position).getId());
name.setText(mList.get(position).getName());
version.setText(mList.get(position).getVersion());
returnconvertView;
}
}
最后,记得加网络权限。
相关文章推荐
- Android中 xml 的解析
- QT中使用QXmlStreamReader解析XML文件
- 解析带有命名空间xmlns的xml文件 (XML解析中的namespace初探)
- Android XML 解析
- 解析XML—— Dom4j的SAX解析
- java SAX解析分析
- Android学习笔记 day02 _ 测试 & 文件读写操作
- XML解析
- SAXReader saxReader = new SAXReader();来解析xml文件
- Java解析XML的四种方法
- XML解析器
- android 3种XML解析方式
- XML解析
- XMl文件解析
- XML解析
- day day up--Java编程之SAX解析XML文件
- NSXMLParser 学习使用
- Java Sax解析xml
- XML解析-DOM4j
- SAX解析XML文件浅析