2010-12-03 19 views
0

簡体字のAndroid SAX XML解析の方法を見てきました。簡体字中国語SAX XMLの解析問題

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

私は、データを解析されてきたが、私はそれがループTextViewsを使用して画面に表示するように見えることはできません。

これは今...これは私のオブジェクトモデルクラスです...質問

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 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; 
    } 

} 

私AndroidSaxFeedParserクラスであることがメインに表示させる方法を...ですアクティビティ?

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クラスで、ここでやっていることによって振り落とさよ、(解析コードが正しく動作していると仮定した場合)の代わりに

待ちを、これを試してみてください。さて、まずテキストビューについては、次のようなものを使いたいと思っています:

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クラスまでは...私は誤解しているかもしれませんが、実際には1つの雑誌とその名前、日付などを定義する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; 
} 
} 

は、次に、あなただけのあなたのArrayListや雑誌[]に取ると、リストビューにそれを表示しますArrayAdapterを拡張する必要があります。

関連する問題