tableview中的android:xml解析输出

我是android的新手。 我已经搜索过代码并完成了xml解析但是它在listview中…我需要它应该在tableview中请帮助我…我的代码如下:

class MyXMLHandler import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class MyXMLHandler 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) { MyXMLHandler.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("maintag")) { /** Start */ sitesList = new SitesList(); } else if (localName.equals("website")) { /** Get attribute value */ // String attr = attributes.getValue("category"); // sitesList.setCategory(attr); } } /** 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("name")) sitesList.setName(currentValue); else if (localName.equalsIgnoreCase("website")) sitesList.setWebsite(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

 import java.util.ArrayList; /** Contains getter and setter method for variables */ public class SitesList { /** Variables */ private ArrayList name = new ArrayList(); private ArrayList website = new ArrayList(); // private ArrayList category = 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 ArrayList getWebsite() { return website; } public void setWebsite(String website) { this.website.add(website); } /**public ArrayList getCategory() { return category; } public void setCategory(String category) { this.category.add(category); }**/ 

}

第三类是MyParsingExample

 import java.net.URL; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.TextView; public class XMLParsingExample extends Activity { /** Create Object For SiteList Class */ SitesList sitesList = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /** Create a new layout to display the view */ LinearLayout layout = new LinearLayout(this); layout.setOrientation(1); /** Create a new textview array to display the results */ TextView name[]; TextView website[]; //TextView category[]; try { /** Handling XML */ SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); /** Send URL to parse XML Tags */ URL sourceUrl = new URL("http://ipaddress/test/file.xml"); /** Create handler to handle XML Tags ( extends DefaultHandler ) */ MyXMLHandler myXMLHandler = new MyXMLHandler(); xr.setContentHandler(myXMLHandler); xr.parse(new InputSource(sourceUrl.openStream())); } catch (Exception e) { System.out.println("XML Pasing Excpetion = " + e); } /** Get result from MyXMLHandler SitlesList Object */ sitesList = MyXMLHandler.sitesList; /** Assign textview array lenght by arraylist size */ name = new TextView[sitesList.getName().size()]; website = new TextView[sitesList.getName().size()]; //category = new TextView[sitesList.getName().size()]; /** Set the result text in textview and add it to layout */ for (int i = 0; i < sitesList.getName().size(); i++) { name[i] = new TextView(this); name[i].setText("Name = "+sitesList.getName().get(i)); website[i] = new TextView(this); website[i].setText("Website = "+sitesList.getWebsite().get(i)); /**category[i] = new TextView(this); category[i].setText("Website Category = "+sitesList.getCategory().get(i));**/ layout.addView(name[i]); layout.addView(website[i]); //layout.addView(category[i]); } /** Set the layout view to display */ setContentView(layout); } 

和xml文件是

    sam sam  

好的Uff Chaaanleeenge接受了

我想我可以猜到你想做什么。 首先,基本上您的代码执行以下操作:

  • 解析XML文件并将结果放入SitesList
  • 以编程方式创建所有布局
  • 对于已解析的每个Item,它会生成一个新的TextView

所以那里没有ListView。

您现在想要将解析后的值放入TableView中。 所以,让我说一下,如何构建代码来生成布局并不是最好的方法来保持您的Presentation Stuff远离代码。 Android非常适合这个目的。 您应该仔细查看http://developer.android.com/guide/topics/resources/index.html,特别是布局资源。 您可以在xml文件中进行布局。

但回到你目前的问题。 要在表格中显示您的内容,您必须编辑MyParsingExample活动。

(我目前无法测试代码,但它应该如下工作:)

 /** Create a new layout to display the view */ LinearLayout layout = new LinearLayout(this); layout.setOrientation(1); 

此时你应该像这样使用TableLayout

 /** Create a new layout to display the view */ TableLayout layout = new TableLayout(this); 

因此tableLayout只是布局其他组件的另一种方式。

现在你需要看看这个部分:

 /** Assign textview array lenght by arraylist size */ name = new TextView[sitesList.getName().size()]; website = new TextView[sitesList.getName().size()]; //category = new TextView[sitesList.getName().size()]; /** Set the result text in textview and add it to layout */ for (int i = 0; i < sitesList.getName().size(); i++) { name[i] = new TextView(this); name[i].setText("Name = "+sitesList.getName().get(i)); website[i] = new TextView(this); website[i].setText("Website = "+sitesList.getWebsite().get(i)); /**category[i] = new TextView(this); category[i].setText("Website Category = "+sitesList.getCategory().get(i));**/ layout.addView(name[i]); layout.addView(website[i]); //layout.addView(category[i]); } 

这就是生成Textviews的地方。 您需要通过一些代码来使用它来生成Rows到tableview中。 正如我所说,我目前无法测试代码。 但我正在努力:

http://developer.android.com/reference/android/widget/TableLayout.html和http://developer.android.com/reference/android/widget/TableRow.html

例如这样:

 /** Assign textview array lenght by arraylist size */ name = new TextView[sitesList.getName().size()]; website = new TextView[sitesList.getName().size()]; //category = new TextView[sitesList.getName().size()]; /** Add rows for every entry and add it to layout */ for (int i = 0; i < sitesList.getName().size(); i++) { //we can leave that part as it is name[i] = new TextView(this); name[i].setText("Name = "+sitesList.getName().get(i)); website[i] = new TextView(this); website[i].setText("Website = "+sitesList.getWebsite().get(i)); //now we create a new row TableRow row = new TableRow(this); //we add the textviews to the row row.addView(name[i]); row.addView(website[i]); //and we add the row to the tablelayout layout.addView(row); } 

我真的希望能帮助你继续这样做。 我一般建议看看http://developer.android.com/guide/topics/resources/available-resources.html这是开始学习android编程的最佳页面。