2010-12-03 6 views
0

Я видел методы упрощенного анализа XML SAX XML.Упрощенная проблема анализа XML XML SAX

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

Я анализироваться данные, но я не могу показаться, чтобы получить его, чтобы отобразить на экране с помощью петельные TextViews.

Это мой класс AndroidSaxFeedParser ...

public class AndroidSaxFeedParser extends BaseFeedParser{ 

final MagazineList magazineList = new MagazineList(); 

    protected AndroidSaxFeedParser(String magazinefeaturedURL) { 
     super(magazinefeaturedURL); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public List<MagazineList> parse() { 
     // TODO Auto-generated method stub 


     RootElement root = new RootElement("maintag"); 

     final List<MagazineList> magazines = new ArrayList<MagazineList>(); 
     Element item = root.getChild("item"); 

     item.setEndElementListener(new EndElementListener(){ 

      @Override 
      public void end() { 
       // TODO Auto-generated method stub 
       magazines.add(magazineList); 
      } 

     }); 

     item.getChild("name").setEndTextElementListener(new EndTextElementListener(){ 
      @Override 
      public void end(String name) { 
       // TODO Auto-generated method stub 
       magazineList.setName(name); 
      } 
     }); 


     item.getChild("imgurl").setEndTextElementListener(new EndTextElementListener() { 

      @Override 
      public void end(String imgurl) { 
       // TODO Auto-generated method stub 
       magazineList.setImgurl(imgurl); 
      } 
     }); 

     item.getChild("date").setEndTextElementListener(new EndTextElementListener() { 

      @Override 
      public void end(String date) { 
       // TODO Auto-generated method stub 
       magazineList.setDate(date); 
      } 
     }); 

     item.getChild("description").setEndTextElementListener(new EndTextElementListener() { 

      @Override 
      public void end(String description) { 
       // TODO Auto-generated method stub 
       magazineList.setDescription(description); 
      } 
     }); 

     item.getChild("price").setEndTextElementListener(new EndTextElementListener() { 

      @Override 
      public void end(String price) { 
       // TODO Auto-generated method stub 
       magazineList.setPrice(price); 
      } 
     }); 

     item.getChild("download").setEndTextElementListener(new EndTextElementListener() { 

      @Override 
      public void end(String download) { 
       // TODO Auto-generated method stub 
       magazineList.setDownload(download); 
      } 
     }); 


     return magazines; 
    } 

} 

Это моя модель объекта класса ...

public class MagazineList { 

private ArrayList<String> name = new ArrayList<String>(); 
private ArrayList<String> imgurl = new ArrayList<String>(); 
private ArrayList<String> date = new ArrayList<String>(); 
private ArrayList<String> price = new ArrayList<String>(); 
private ArrayList<String> description = new ArrayList<String>(); 
private ArrayList<String> download = new ArrayList<String>(); 

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

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

public ArrayList<String> getImgurl(){ 
    return imgurl; 
} 

public void setImgurl(String imgurl){ 
    this.imgurl.add(imgurl); 
} 

public ArrayList<String> getDate() { 
    return date; 
} 

public void setDate(String date) { 
    this.date.add(date); 
} 

public ArrayList<String> getPrice() { 
    return price; 
} 

public void setPrice(String price) { 
    this.price.add(price); 
} 

public ArrayList<String> getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description.add(description); 
} 

public ArrayList<String> getDownload() { 
    return download; 
} 

public void setDownload(String download) { 
    this.download.add(download); 
} 
} 

Вопрос теперь ... как сделать его отображения на главном Мероприятия?

public void onCreate(Bundle savedInstanceState) { 
    MagazineList magazineList = null; 
private List<MagazineList> magazines = null; 



    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(1); 


    TextView name[]; 
    TextView imgurl[]; 
    TextView date[]; 
    TextView description[]; 
    TextView price[]; 
    TextView download[]; 

    AndroidSaxFeedParser saxparser = new AndroidSaxFeedParser(<my website>); 
    magazines = saxparser.parse(); 
    for(MagazineList magazineList : magazines){ 
     name = new TextView[magazineList.getName().size()]; 
     imgurl = new TextView[magazineList.getName().size()]; 
     date = new TextView[magazineList.getName().size()]; 
     description = new TextView[magazineList.getName().size()]; 
     price = new TextView[magazineList.getName().size()]; 
     download = new TextView[magazineList.getName().size()]; 


    (Supposingly I should get my data from here... What's next? Perhaps I have some syntax errors when declaring TextViews, I'm not sure. Please help out.) 
    } 

} 

ответ

0

Гм, я не эксперт Java, но я никогда ничего подобного, что вы делаете с этими TextViews не видел. Это обозначение массива.

Попробуйте это вместо того, чтобы (при условии разбора код работает правильно)

Подождите, я ПОЛНОСТЬЮ скинуться на то, что вы здесь делаете с классом MagazineList. Хорошо, первые вещи, для TextViews, вы будете хотеть использовать что-то вроде этого:

name = new TextView(this); 
name.setText(/*your magazinelist getter for name*/); 
name.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
layout.addView(name); 

Являются ли эти вдаваясь в список? Что вы в конечном итоге делаете с ними? Если вы просто пытаетесь убедиться в том, что контент получает синтаксический анализ, просто запустите отладчик и проверьте объект magazinelist после запуска синтаксического анализа.

Что касается класса MagazineList ... возможно, я не понимаю, но на самом деле у вас должен быть класс Magazine, который определяет один журнал, его имя, дату и т. Д., Тогда вы можете использовать ArrayList<Magazine> для создать список журналов. Затем вы можете использовать цикл foreach для итерации через них или адаптировать их к пользовательскому ListView.

Пример журнала Класс:

public class Magazine { 

private String name, imgurl, date, price, description, download; 

public String getName() { 
    return name; 
} 

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

public String getImgurl(){ 
    return imgurl; 
} 

public void setImgurl(String imgurl){ 
    this.imgurl = imgurl; 
} 

public String getDate() { 
    return date; 
} 

public void setDate(String date) { 
    this.date = date; 
} 

public String getPrice() { 
    return price; 
} 

public void setPrice(String price) { 
    this.price = price; 
} 

public String getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public String getDownload() { 
    return download; 
} 

public void setDownload(String download) { 
    this.download = download; 
} 
} 

Тогда вам просто нужно направить ArrayAdapter, который будет принимать в вашем ArrayList или журнал [] и отобразить его в ListView.

Смежные вопросы