Autore Topic: popolare un custom adapter con dati provenienti da parsing  (Letto 268 volte)

Offline coverbags

  • Nuovo arrivato
  • *
  • Post: 30
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    win 8.1
popolare un custom adapter con dati provenienti da parsing
« il: 06 Settembre 2015, 21:51:34 CEST »
0
Ciao a tutti, sto provando a realizzare un news reader che , scaricando in tempo reale un file xml , ne fa il parsing  con i dati ricavati , riempe un custom adapter e quindi una listview.

ovviamente il tutto avviene utilizzando un asynctask .
nel metodo onPostExecute, ricevo un file di tipo List popolato da oggetti derivati da una classe che chiamo ArticleInfo appositamente creata  .
di seguito il codice

Codice (Java): [Seleziona]
public class ArticleInfo
{
    private String title=null;
    private String url=null;

    public ArticleInfo(String title, String url)
    {
        this.title = title;
        this.url = url;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

nel metodo onPostExecute , devo popolare un custom adapter  .  qui il codice

Codice (Java): [Seleziona]
 @Override
           protected void onPostExecute(List<ArticleInfo> res){
            super.onPostExecute(res);
               progress.dismiss();
               if (res!=null){
                 
                 adapter=new Adaptery(context,?, ?);

                   lista.setAdapter( adapter);

l'adapter , ha come architettura due textview , in ognuna delle quali ci vanno delle stringhe derivanti da due diversi arrayList . ( al posto dei punti interrogativi )  Ora, in entrata , nel costruttore, prendo gia' in elemento del tipo List<ArticleInfo> res , che di suo e' un ArrayList  corredato gia' da due stringhe , un title ed un url . Vorrei estrapolare quete due stringhe e metterle in due arraylist diversi , onde poter poi inserirli nel custom adapter. Qualcuno saprebbe suggerirmi come fare ?    avevo pensato ad un metodo tip res.get() ma mi da' errore . francamente ho cercato anche sulla documentazione ufficiale ma le mie conoscenze di java probabilmente non bastano .  grazie dell'attenzione . allego anche codice della classe RssParser che utilizzo per fare il parsing .
Codice (Java): [Seleziona]
public class RssParser {

public static List<ArticleInfo> parseXML(String rss){

            List<ArticleInfo> res =new ArrayList<>();
    DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
    DocumentBuilder builder =null;

    try {
        builder=factory.newDocumentBuilder();
    } catch (ParserConfigurationException e) { }

    try {
        Document doc = builder.parse(new InputSource(new StringReader(rss)));
        doc.normalize();// aggiungo getDocumentElement()
        NodeList list = doc.getElementsByTagName("item");
        for(int i=0;i<list.getLength();i++){

            Node n=list.item(i);
            if(n.getNodeType()==Node.ELEMENT_NODE){
                Element e= (Element) n;
                String title = e.getElementsByTagName("title").item(0).getTextContent();
                String url = e.getElementsByTagName("link").item(0).getTextContent();
                res.add(new ArticleInfo(title,url));
            }
        }
    } catch (SAXException e) {

    } catch (IOException e) {

    }

    return res;
}




}