Отображение данных в виде списка после разбора SAX - PullRequest
0 голосов
/ 02 июня 2011

Может ли кто-нибудь дать мне полную серию руководств Ссылка или пример кода проекта затмения Ссылка для отображения данных в виде списка после SAX-анализа XML в Android.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 06 июля 2011

Вот попробуйте это

В упражнении вы хотите, чтобы listView был в:

public class listView extends ListActivity {
    ArrayList<String> items = new ArrayList<String>();

    @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<String>(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:- <name>AndroidPeople</name>
    * -- <name> )*/
    @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:- <name>AndroidPeople</name>
    * -- </name> )*/
    @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:- <name>AndroidPeople</name>
    * -- 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<String> name = new ArrayList<String>();
private ArrayList<String> lastName = new ArrayList<String>();

/** In Setter method default it will return arraylist
* change that to add */

public ArrayList<String> getName() {
return name;
}

public void setName(String name) {
this.name.add(name);
}

public void setLastName(String lastName) {
    this.lastName.add(lastName);
}

public ArrayList<String> getLastName() {
    return lastName;
}

}

fileToParse.xml: Нажмите здесь для получения файла xml

0 голосов
/ 02 июня 2011

Это наиболее полный ресурс, который вы найдете:

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

В основном вам нужно создать адаптер из проанализированных данных и передать его в ListView.Вы можете расширить BaseAdapter для создания пользовательского или просто использовать ArrayAdapter.

0 голосов
/ 02 июня 2011

объявляет scrollview в xml &lativelayout как дочерний. Теперь вы можете добавить их, создать количество строк таблицы, которые вы хотите отобразить (динамически), добавить к ним данные и добавить эти строки таблицы вlativealayout. Так вы почувствуете представление списка. Я использовал этот способ и отлично работал для меня.

...