在SAX解析后在列表视图中显示数据

任何人都可以给我一个完整的教程系列链接或示例eclipse项目代码链接用于在Android中的SAX解析XML后在列表视图中显示数据。

提前致谢。

试试吧

在您希望listView位于的活动中:

public class listView extends ListActivity { ArrayList items = new ArrayList(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listViewLayout); try { /** Handling XML */ SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); /** If using remote server for xml file */ URL sourceUrl = new URL("http://www.server.com/fileToParse.xml"); /** Create handler to handle XML Tags ( extends DefaultHandler ) */ ExampleHandler myXMLHandler = new ExampleHandler(); xr.setContentHandler(myXMLHandler); /** if using remote file */ xr.parse(new InputSource(sourceUrl.openStream())); /** if local file */ xr.parse(new InputSource(getContext().getResources().getXml(R.fileToParse.MyXml)); }catch(Exception e) { Log.e("XML Error "+e.toString()); } /** Get result from MyXMLHandler SitlesList Object */ sitesList = ExampleHandler.sitesList; for(int i = 0; i < sitesList.getName().size(); i++) { items.add(sitesList.getName().get(i)+" "+sitesList.getLastName().get(i)); } /** Set the layout view to display */ setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, items)); } public void onListItemClick(ListView parent, View v, int position, long id) { /** puExtra method for if you want to pass variable to next activity */ Intent i = new Intent(this, listViewSub.class); i.putExtra("name", sitesList.getName()); startActivity(i); } } 

listViewLayout.xml: 无法获取要显示的布局文件,请单击此处

ExampleHandler.java:

 public class ExampleHandler extends DefaultHandler{ Boolean currentElement = false; String currentValue = null; public static SitesList sitesList = null; public static SitesList getSitesList() { return sitesList; } public static void setSitesList(SitesList sitesList) { ExampleHandler.sitesList = sitesList; } /** Called when tag starts ( ex:- AndroidPeople * --  )*/ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { currentElement = true; if (localName.equals("Records")) { /** Start */ sitesList = new SitesList(); } } /** Called when tag closing ( ex:- AndroidPeople * --  )*/ @Override public void endElement(String uri, String localName, String qName) throws SAXException { currentElement = false; /** set value */ if (localName.equalsIgnoreCase("FirstName")) sitesList.setName(currentValue); else if(localName.equalsIgnoreCase("LastName")) sitesList.setLastName(currentValue); } /** Called to get tag characters ( ex:- AndroidPeople * -- to get AndroidPeople Character ) */ @Override public void characters(char[] ch, int start, int length) throws SAXException { if (currentElement) { currentValue = new String(ch, start, length); currentElement = false; } } } 

SitesList.java:

 public class SitesList { /** Variables */ private ArrayList name = new ArrayList(); private ArrayList lastName = new ArrayList(); /** In Setter method default it will return arraylist * change that to add */ public ArrayList getName() { return name; } public void setName(String name) { this.name.add(name); } public void setLastName(String lastName) { this.lastName.add(lastName); } public ArrayList getLastName() { return lastName; } } 

fileToParse.xml: 单击此处获取xml文件

在xml和relativelayout中声明scrollview,因为它是孩子。 现在,您可以添加它们创建要显示(动态)向其添加数据的表行数,并将这些表行添加到relativealayout.So将获得listview的感觉。 我用这种方式和我的工作非常好。

这是您将找到的最全面的资源:

http://www.ibm.com/developerworks/opensource/library/x-android/

基本上,您需要根据已解析的数据创建适配器并将其提供给ListView。 您可以扩展BaseAdapter以创建自定义的,或者只使用ArrayAdapter。