在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。
- 将数据从fragment分配给activity变量,并在另一个片段中获取变量
- Geocoder.isPresent()未定义类型Geocoder
- 如何使用Android Google Spreadsheet API创建列表范围validation
- 在Android中加载文件夹中的所有图像
- Google Analytics(分析) – 在AsyncTask中发送的NetworkOnMainThreadException
- Android上的XML SOAP签名
- 如何将捕获/图库图像传递给android中的下一个活动
- Android项目中使用的WCF(FileNotFoundException)
- 添加日历活动而不打开日历