Синтаксический анализ XML и отображение результата в виде списка. - PullRequest
0 голосов
/ 23 августа 2011

Я использую следующий код на примере Android-people-XMLParsing для синтаксического анализа XML-файла, и он отлично работает ..

, но он извлекает данные в TextView. Я хочу поместить эти данные вListView ..

Я попытался создать CustomAdapter и изменить Activity в ListActivity. Но ничего не работает. Я могу видеть только пустой экран. Может ли кто-нибудь помочь мне сделать это ...

Спасибо !!

     package com.androidpeople.xml.parsing;

     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.graphics.Color;
     import android.os.Bundle;
     import android.widget.LinearLayout;
     import android.widget.TextView;

    public class XMLParsingExample extends Activity {

/** Create Object For markerList Class */
mymarkers markerList =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 address[];
    TextView city[];
    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("xxxxxxxxx");

        /** 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 */
    markerList = MyXMLHandler.markerList;

    /** Assign textview array lenght by arraylist size */


    name = new TextView[markerList.getName().size()];
    address = new TextView[markerList.getaddress().size()];
    city = new TextView[markerList.getCity().size()];
    /** Set the result text in textview and add it to layout */
    for (int i = 0; i < markerList.getName().size(); i++) {
        name[i] = new TextView(this);
        name[i].setText("Name = "+markerList.getName().get(i));

        address[i] = new TextView(this);
        address[i].setText("address = "+markerList.getaddress().get(i));

        city[i] = new TextView(this);  
        city[i].setText("city = "+markerList.getCity().get(i));
        System.out.println("count33..."+markerList.getCity().size());
        city[i].setBackgroundColor(Color.WHITE);
        layout.addView(name[i]);
        layout.addView(address[i]);
        layout.addView(city[i]);

        //layout.addView(border[i]);
    }

    /** Set the layout view to display */
    setContentView(layout);

}
}

1 Ответ

0 голосов
/ 23 августа 2011

Несколько дней назад я ответил на очень похожий вопрос, который вы, возможно, захотите проверить. Вы можете проверить вопрос Android: синтаксический анализ Sax для просмотра списка и проверить принятый ответ. Следуйте инструкциям до getView (), и все будет в порядке.

Итак, вот что вам нужно сделать:

  • Используйте DOM вместо SAX, это проще и идеально подходит для ListView
  • Реализация адаптера, расширяющего BaseAdapter, передавая корневой элемент этому адаптеру
  • Реализация getView в адаптере для добавления необходимого TextView

Опять же, я изложил шаги в Android: Sax-разбор для просмотра списка . Дайте мне знать, если у вас есть дополнительные вопросы

...