2014-06-23 48 views
0

這是我的片段,其中提取HTML表格的某些部分的一部分:填充一個自定義的ListView項與JSOUP

public class Vertretung extends Fragment { 
     ArrayList<Vertretungsdaten> mData = new ArrayList<Vertretungsdaten>(); 
     ListView mListView; 
     private CustomAdapter mAdapter; 
       //unrelevant stuff 
      String URL = "https://greselius.net/idesk/vplan/Anzeige/Schueler_heute/subst_001.htm"; 
      try { 
       Document doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10").get(
       ); 
       Elements questions = doc.select("table.mon_list"); 
       Elements td = questions.select("td[align]"); 
       for (Element myElement: td) { 
        Vertretungsdaten daten = new Vertretungsdaten(); 
        daten.setKlasse(myElement.text()); 
        daten.setStunde(myElement.text()); 
        daten.setVertreter(myElement.text()); 
        daten.setFach(myElement.text()); 
        daten.setRaum(myElement.text()); 
        daten.setLehrer(myElement.text()); 
        daten.setArt(myElement.text()); 
        daten.setText(myElement.text()); 
        mData.add(daten); 
       }        

這是我Vertretungsdaten類:

public class Vertretungsdaten { 
    private String klasse; 
    private String stunde; 
    private String vertreter; 
    private String fach; 
    private String raum; 
    private String lehrer; 
    private String art; 
    private String text; 
    private int typ; 

    public Vertretungsdaten() { 

    } 


    public String getVertreter() { 
     return vertreter; 
    } 

    public void setVertreter(String vertreter) { 
     this.vertreter = vertreter; 
    } 

有干將併爲每個字符串設置setter。 現在,這是我的CustomAdapter:

public class CustomAdapter extends ArrayAdapter<Vertretungsdaten> { 

    private ArrayList<Vertretungsdaten> objects; 


    public CustomAdapter(Context context, int textViewResourceId, ArrayList<Vertretungsdaten> objects) { 
     super(context, textViewResourceId, objects); 
     this.objects = objects; 
    } 


    public View getView(int position, View convertView, ViewGroup parent) { 


     View v = convertView; 


     if (v == null) { 
      LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = inflater.inflate(R.layout.item, null); 
     } 


     Vertretungsdaten i = objects.get(position); 

     if (i != null) { 

      TextView lehrer = (TextView) v.findViewById(R.id.lehrer); 
      //same thing for the other textviews 

      lehrer.setText(i.getLehrer()); 
      //again same thing for the other textviews 

     return v; 

    } 

} 

現在我有一個自定義列表視圖,應填寫這樣的:

Klasse  Lehrer  Fach  Art 
Stunde  Vertreter Raum  Text 

Klasse  Lehrer  Fach  Art 
Stunde  Vertreter Raum  Text 

Klasse  Lehrer  Fach  Art 
Stunde  Vertreter Raum  Text 

但發生的事情是:

Klasse  Klasse  Klasse  Klasse 
Klasse  Klasse  Klasse  Klasse 

Stunde  Stunde  Stunde  Stunde 
Stunde  Stunde  Stunde  Stunde 

我是什麼做錯了? 在此先感謝

回答

0

我認爲問題是,你正在構建的數組中:

for (Element final : td) { 
         Vertretungsdaten daten = new Vertretungsdaten(); 
         daten.setKlasse(question.text()); 
         daten.setStunde(question.text()); 
         daten.setVertreter(question.text()); 
         daten.setFach(question.text()); 
         daten.setRaum(question.text()); 
         daten.setLehrer(question.text()); 
         daten.setArt(question.text()); 
         daten.setText(question.text()); 
         mData.add(daten); 
        } 

您在循環中使用同一個對象「的問題」。你可以顯示它的初始化位置嗎?和「td」?你應該使用「final」,final.text()來填充daten。 (也使用了「最後」一詞是不好用的變量。)

for (Element myElement: td) { 
         Vertretungsdaten daten = new Vertretungsdaten(); 
         daten.setKlasse(myElement.text()); 
         daten.setStunde(myElement.text()); 
         daten.setVertreter(myElement.text()); 
         daten.setFach(myElement.text()); 
         daten.setRaum(myElement.text()); 
         daten.setLehrer(myElement.text()); 
         daten.setArt(myElement.text()); 
         daten.setText(myElement.text()); 
         mData.add(daten); 
        } 

嘗試把一些日誌在循環看到你MDATA添加什麼。

+0

對不起,我忘了用final來替換問題,但這並不能解決我的問題。我編輯了我的帖子,以便您可以看到td被初始化的位置。 – user3517658

相關問題