Android 使用JSOUP填充自定义ListView项
这是我的片段的一部分,它提取HTML表的一些部分:Android 使用JSOUP填充自定义ListView项,android,listview,jsoup,Android,Listview,Jsoup,这是我的片段的一部分,它提取HTML表的一些部分: public class Vertretung extends Fragment { ArrayList<Vertretungsdaten> mData = new ArrayList<Vertretungsdaten>(); ListView mListView; private CustomAdapter mAdapter; //unr
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);
}
每个字符串都有getter和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 Klasse Klasse Klasse
Klasse Klasse Klasse Klasse
Stunde Stunde Stunde Stunde
Stunde Stunde Stunde Stunde
我做错了什么?
提前感谢我认为问题在于您正在构建的阵列:
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。
(同样,使用“final”一词不适合用于变量。)
尝试在循环中添加一些日志,以查看您在mData中添加的内容。很抱歉,我忘记用final替换问题,但这并不能解决我的问题。我编辑了我的帖子,这样你就可以看到td初始化的地方了。
Klasse Klasse Klasse Klasse
Klasse Klasse Klasse Klasse
Stunde Stunde Stunde Stunde
Stunde Stunde Stunde Stunde
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);
}
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);
}