
blackfire185
Stamm-User
- 40
Hallo,
ich habe ein weiteres Problem und komme einfach nicht auf die Lösung. Ich hoffe jemand von euch findet den Fehler:
Ich habe einen RSS-Feed.
Diesen rufe ich in der AsyncTask nach diesem Beispielcode ab:
Dann möchte ich die Daten in einer ListView mit Cusotm Style darstellen.
DAzu habe ich die XML-Datei für jedes Item erstellt.
Dann die Klasse, welches die Daten sammelt, Details.java:
Dann nach Tutorial einen Adapter:
Dann wird in meiner Asynctask in der doinBackground der RSS Feed nach dem oben genannten Beispielcode aufgerufen und eigentlich in eine ArrayList details geschrieben werden:
Die ArrayList, die die Daten aufnehmen soll wird definiert:
und zu guter letzt wird die Listview mit dem Adapter in der OnPostExecute verknüpft:
Mein Problem: Die Listview zeigt immer nur den Letzten Eintrag des Rss Feeds an. (siehe Anhang Bild)
Meine Schlussfolgerung:
wird nur beim letzten Mal aufgerufen. Nur das ist irgendwie unlogisch, weil es ja sehr oft angezeigt wird und nicht nur ein mal.
Könnt ihr mir vielleicht helfen, ich sehe nämlich nicht, woran es liegen könnte.
Vielen Dank
Gruß
ich habe ein weiteres Problem und komme einfach nicht auf die Lösung. Ich hoffe jemand von euch findet den Fehler:
Ich habe einen RSS-Feed.
Diesen rufe ich in der AsyncTask nach diesem Beispielcode ab:
Dann möchte ich die Daten in einer ListView mit Cusotm Style darstellen.
DAzu habe ich die XML-Datei für jedes Item erstellt.
Dann die Klasse, welches die Daten sammelt, Details.java:
PHP:
public class Details {
String name;
String desc;
String time;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
Dann nach Tutorial einen Adapter:
PHP:
public class CustomAdapter extends BaseAdapter {
private ArrayList _data;
Context _c;
CustomAdapter (ArrayList data, Context c){
_data = data;
_c = c;
}
public int getCount() {
// TODO Auto-generated method stub
return _data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return _data.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if (v == null)
{
LayoutInflater vi = (LayoutInflater)_c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
TextView nameview = (TextView)v.findViewById(R.id.titel);
TextView descview = (TextView)v.findViewById(R.id.decription);
TextView timeView = (TextView)v.findViewById(R.id.time);
Details msg = (Details) _data.get(position);
nameview.setText(msg.name);
descview.setText(msg.desc);
timeView.setText(msg.time);
return v;
}
}
Dann wird in meiner Asynctask in der doinBackground der RSS Feed nach dem oben genannten Beispielcode aufgerufen und eigentlich in eine ArrayList details geschrieben werden:
PHP:
try {
URL url = new URL("fedd.rss");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp = factory.newPullParser();
// We will get the XML from an input stream
xpp.setInput(getInputStream(url), "UTF_8");
Detail = new Details();
boolean insideItem = false;
// Returns the type of current event: START_TAG, END_TAG, etc..
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equalsIgnoreCase("item")) {
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase("title")) {
if (insideItem)
Detail.setName(xpp.nextText()); //Test den Titel mit SetName zu setzen
} else if (xpp.getName().equalsIgnoreCase("link")) {
if (insideItem)
links.add(xpp.nextText()); //extract the link of article
}
}else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("item")){
insideItem=false;
}
details.add(Detail);
eventType = xpp.next(); //move to next element
}
Die ArrayList, die die Daten aufnehmen soll wird definiert:
PHP:
private class rsstask extends AsyncTask<String, Integer, String>{
ArrayList<Details> details = new ArrayList();
Details Detail;
und zu guter letzt wird die Listview mit dem Adapter in der OnPostExecute verknüpft:
PHP:
protected void onPostExecute(String result){
ListView lv1 = (ListView)findViewById(R.id.listView1);
lv1.setAdapter(new CustomAdapter(details, Fragen.this));
}
Mein Problem: Die Listview zeigt immer nur den Letzten Eintrag des Rss Feeds an. (siehe Anhang Bild)
Meine Schlussfolgerung:
PHP:
details.add(Detail);
Könnt ihr mir vielleicht helfen, ich sehe nämlich nicht, woran es liegen könnte.
Vielen Dank
Gruß