我正在学习如何在 Android 中解析 xml 文档。我有完整的 XML 解析源代码,但它在控制台上显示输出。但我想在 ListView 中显示结果数据我不知道如何将数据显示到 listview 中。你能帮我吗解决这个问题。我在这里给出完整的源代码。MainActivity.java
public class MainActivity extends Activity {
private ProgressDialog pDialog;
private ItemXMLHandler myXMLHandler;
private String rssFeed = "https://www.dropbox.com/s/t4o5wo6gdcnhgj8/imagelistview.xml?dl=1";
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview =(TextView)findViewById(R.id.textView1);
}
public void doParsing(View v)
{
if (isNetworkAvailable())
{
textview.setText("Loading...Please wait...");
new AsyncData().execute(rssFeed);
}
else
{
showToast("No Network Connection!!!");
}
}
class AsyncData extends AsyncTask<String, Void, Void>
{
@Override
protected void onPreExecute()
{
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setTitle("Loading....");
pDialog.setMessage("Please wait...");
pDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params)
{
try
{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
myXMLHandler = new ItemXMLHandler();
xr.setContentHandler(myXMLHandler);
URL _url = new URL(params[0]);
xr.parse(new InputSource(_url.openStream()));
} catch (ParserConfigurationException pce)
{
Log.e("SAX XML", "sax parse error", pce);
} catch (SAXException se)
{
Log.e("SAX XML", "sax error", se);
} catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
textview.setText("Done!!!");
if (pDialog != null && pDialog.isShowing())
{
pDialog.dismiss();
}
ArrayList<Bean> itemsList = myXMLHandler.getItemsList();
//ArrayList<String> temp=new ArrayList<String>();
if (null != itemsList && itemsList.size() != 0)
{
for (int index = 0; index < itemsList.size(); index++)
{
Bean objBean = itemsList.get(index);
/*System.out.println(">>>>>>>>>>>>>>>" + index);
System.out.println("ID :: " + objBean.getId());
System.out.println("TITLE :: " + objBean.getTitle());
System.out.println("DESC :: " + objBean.getDesc());
System.out.println("PUBDATE :: " + objBean.getPubDate());
System.out.println("LINK :: " + objBean.getLink());*/
// Store values in ArrayList and Pass to the Customer Adapter class
}
}
}
}
public void showToast(String msg)
{
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
}
public boolean isNetworkAvailable()
{
ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null)
{
return false;
}
else
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
{
for (int i = 0; i < info.length; i++)
{
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}
}
XmlHandler 类
public class ItemXMLHandler extends DefaultHandler {
Boolean currentElement = false;
String currentValue = "";
Bean item = null;
private ArrayList<Bean> itemsList = new ArrayList<Bean>();
public ArrayList<Bean> getItemsList()
{
return itemsList;
}
// Called when tag starts
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException
{
currentElement = true;
currentValue = "";
if (localName.equals("item"))
{
item = new Bean();
}
}
// Called when tag closing
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException
{
currentElement = false;
if (localName.equals("id"))
{
item.setId(currentValue);
} else if (localName.equals("title"))
{
item.setTitle(currentValue);
} else if (localName.equals("desc"))
{
item.setDesc(currentValue);
} else if (localName.equals("pubDate"))
{
item.setPubDate(currentValue);
} else if (localName.equals("link"))
{
item.setLink(currentValue);
} else if (localName.equals("item"))
{
itemsList.add(item);
}
}
// Called to get tag characters
@Override
public void characters(char[] ch, int start, int length)
throws SAXException
{
if (currentElement)
{
currentValue = currentValue + new String(ch, start, length);
}
}
}
存储数据的BeanClass
public class Bean {
private String id;
private String title;
private String desc;
private String pubDate;
private String link;
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 getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}