Gelöschter Account
- Forum-Beiträge: 136
21.02.2011, 18:31:41 via Website
21.02.2011 18:31:41 via Website
Hallo zusammen,
ich bins wieder. Ich wusste nicht genau, wie ich den Titel passend schreiben sollte, daher Entschuldigung für den unklaren Titel.
Folgendes Problem. Baue einen RSS-Reader, der bestimmte Teile einer xml ausliest und ausgibt. Habe es am Anfang mit 2 Tags probiert undzwar mit "title" und "link", dass funktioniert auch wunderbar.
Dann wollte ich den tag "pubDate", um das Datum zu bekommen, hinzufügen, doch hier scheiterts. Habe die Codezeilen für "pubDate" genauso angepasst, wie die von title und link aber er gibt mir folgenden Fehler aus:
Habe mir daraufhin alle einzelnen Schritte, die ich damit mache, im LogCat angeschaut, ob die Variable auch gefüllt ist. Die Variable ist überall gefüllt, habe aber das gefühl, dass sie beim Ausgeben einen Fehler verursacht, als ob sie wieder leer wäre.
#################################################################
#################################################################
package com.androidpeople.xml.parsing;
import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import android.util.Log;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class XMLParsingExample extends Activity {
/** Create Object For SiteList Class */
SitesList sitesList;
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
/** Create a new textview array to display the results */
TextView name[];
TextView website[];
TextView datum[];
try {
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL("http://www.malte-heyenga.de/test.xml");
/** Create handler to handle XML Tags ( extends DefaultHandler ) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
/** Get result from MyXMLHandler SitlesList Object */
sitesList = MyXMLHandler.sitesList;
/** Assign textview array lenght by arraylist size */
name = new TextView[sitesList.getName().size()];
website = new TextView[sitesList.getWebsite().size()];
datum = new TextView[sitesList.getDate().size()];
/** Set the result text in textview and add it to layout */
for (int i = 0; i < sitesList.getName().size(); i++) {
name[i] = new TextView(this);
name[i].setText("Titel = "+sitesList.getDate().get(i));
#################################################################
#################################################################
Das ist der erste Codeblock. bei /** Assign textview array lenght by arraylist size */ habe ich mir das "datum" auch im LogCat angeschaut, wo genau das drin stand, was dort drin stehen soll.
#################################################################
#################################################################
datum[i] = new TextView(this);
datum[i].setText("Titel = "+sitesList.getDate().get(i));
Log.d("whatever"," myObject isNull:"+datum[i]);
website[i] = new TextView(this);
website[i].setText("Website = "+sitesList.getWebsite().get(i));
final String test = sitesList.getWebsite().get(i);
website[i].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(test);
}
});
layout.addView(name[i]);
layout.addView(datum[i]);
layout.addView(website[i]);
}
/** Set the layout view to display */
setContentView(layout);
}
}
#################################################################
#################################################################
Hier möchte ich dies nun ausgeben um das Datum anzeigen zu lassen (die ersten beiden Zeilen meine ich), doch ab hier geht es net weiter. Wenn ich diese 2 Zeilen lösche, dann gibt es keinen force close und das Programm startet.
Am Anfang bestand der "pubDate" Tag aus Buchstaben und Zahlen. Da dachte ich, dass es vill. daran liegt, da ich ja einen String einlese. Habe dann alle "pubDate" einfach in "Sonntag" umbenannt aber das hat leider auch nichts gebracht.
Ich weiß nicht wo der Fehler ist und habe schon sau viel probiert und sehen warscheinlich den Wald vor lauter Bäumen nicht. Die App besteht aus 3 Dateien, die ich euch noch anhänge, da der Beitrag sonst endlos lang wird und unübersichtlich ist, wenn man soviel scrollen muss.Falls ich was vergessen habe, was ihr braucht, schreibt es bitte. Hier hänge ich noch den ganzen Log an:
Und hier die 3 Dateien:
MyXMLHandler.java
SitesList.java
XMLParsingExample.java
Liebe Grüße,
Malte
P.s. Irgentwie funktioniert der Code Tag bei mir net richtig, deswegen stellenweise die Raute.
ich bins wieder. Ich wusste nicht genau, wie ich den Titel passend schreiben sollte, daher Entschuldigung für den unklaren Titel.
Folgendes Problem. Baue einen RSS-Reader, der bestimmte Teile einer xml ausliest und ausgibt. Habe es am Anfang mit 2 Tags probiert undzwar mit "title" und "link", dass funktioniert auch wunderbar.
Dann wollte ich den tag "pubDate", um das Datum zu bekommen, hinzufügen, doch hier scheiterts. Habe die Codezeilen für "pubDate" genauso angepasst, wie die von title und link aber er gibt mir folgenden Fehler aus:
102-21 13:27:33.343: ERROR/AndroidRuntime(307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidpeople.xml.parsing/com.androidpeople.xml.parsing.XMLParsingExample}: java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
Habe mir daraufhin alle einzelnen Schritte, die ich damit mache, im LogCat angeschaut, ob die Variable auch gefüllt ist. Die Variable ist überall gefüllt, habe aber das gefühl, dass sie beim Ausgeben einen Fehler verursacht, als ob sie wieder leer wäre.
#################################################################
#################################################################
package com.androidpeople.xml.parsing;
import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import android.util.Log;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class XMLParsingExample extends Activity {
/** Create Object For SiteList Class */
SitesList sitesList;
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
/** Create a new textview array to display the results */
TextView name[];
TextView website[];
TextView datum[];
try {
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL("http://www.malte-heyenga.de/test.xml");
/** Create handler to handle XML Tags ( extends DefaultHandler ) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
/** Get result from MyXMLHandler SitlesList Object */
sitesList = MyXMLHandler.sitesList;
/** Assign textview array lenght by arraylist size */
name = new TextView[sitesList.getName().size()];
website = new TextView[sitesList.getWebsite().size()];
datum = new TextView[sitesList.getDate().size()];
/** Set the result text in textview and add it to layout */
for (int i = 0; i < sitesList.getName().size(); i++) {
name[i] = new TextView(this);
name[i].setText("Titel = "+sitesList.getDate().get(i));
#################################################################
#################################################################
Das ist der erste Codeblock. bei /** Assign textview array lenght by arraylist size */ habe ich mir das "datum" auch im LogCat angeschaut, wo genau das drin stand, was dort drin stehen soll.
#################################################################
#################################################################
datum[i] = new TextView(this);
datum[i].setText("Titel = "+sitesList.getDate().get(i));
Log.d("whatever"," myObject isNull:"+datum[i]);
website[i] = new TextView(this);
website[i].setText("Website = "+sitesList.getWebsite().get(i));
final String test = sitesList.getWebsite().get(i);
website[i].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(test);
}
});
layout.addView(name[i]);
layout.addView(datum[i]);
layout.addView(website[i]);
}
/** Set the layout view to display */
setContentView(layout);
}
}
#################################################################
#################################################################
Hier möchte ich dies nun ausgeben um das Datum anzeigen zu lassen (die ersten beiden Zeilen meine ich), doch ab hier geht es net weiter. Wenn ich diese 2 Zeilen lösche, dann gibt es keinen force close und das Programm startet.
Am Anfang bestand der "pubDate" Tag aus Buchstaben und Zahlen. Da dachte ich, dass es vill. daran liegt, da ich ja einen String einlese. Habe dann alle "pubDate" einfach in "Sonntag" umbenannt aber das hat leider auch nichts gebracht.
Ich weiß nicht wo der Fehler ist und habe schon sau viel probiert und sehen warscheinlich den Wald vor lauter Bäumen nicht. Die App besteht aus 3 Dateien, die ich euch noch anhänge, da der Beitrag sonst endlos lang wird und unübersichtlich ist, wenn man soviel scrollen muss.Falls ich was vergessen habe, was ihr braucht, schreibt es bitte. Hier hänge ich noch den ganzen Log an:
102-21 13:27:33.343: ERROR/AndroidRuntime(307): FATAL EXCEPTION: main
202-21 13:27:33.343: ERROR/AndroidRuntime(307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidpeople.xml.parsing/com.androidpeople.xml.parsing.XMLParsingExample}: java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
302-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
402-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
502-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
602-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
702-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.os.Handler.dispatchMessage(Handler.java:99)
802-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.os.Looper.loop(Looper.java:123)
902-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.main(ActivityThread.java:4627)
1002-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.lang.reflect.Method.invokeNative(Native Method)
1102-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.lang.reflect.Method.invoke(Method.java:521)
1202-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1302-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1402-21 13:27:33.343: ERROR/AndroidRuntime(307): at dalvik.system.NativeStart.main(Native Method)
1502-21 13:27:33.343: ERROR/AndroidRuntime(307): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
1602-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
1702-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.util.ArrayList.get(ArrayList.java:311)
1802-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.androidpeople.xml.parsing.XMLParsingExample.onCreate(XMLParsingExample.java:72)
1902-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
2002-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
202-21 13:27:33.343: ERROR/AndroidRuntime(307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidpeople.xml.parsing/com.androidpeople.xml.parsing.XMLParsingExample}: java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
302-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
402-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
502-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
602-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
702-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.os.Handler.dispatchMessage(Handler.java:99)
802-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.os.Looper.loop(Looper.java:123)
902-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.main(ActivityThread.java:4627)
1002-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.lang.reflect.Method.invokeNative(Native Method)
1102-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.lang.reflect.Method.invoke(Method.java:521)
1202-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1302-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1402-21 13:27:33.343: ERROR/AndroidRuntime(307): at dalvik.system.NativeStart.main(Native Method)
1502-21 13:27:33.343: ERROR/AndroidRuntime(307): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 20, size is 20
1602-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
1702-21 13:27:33.343: ERROR/AndroidRuntime(307): at java.util.ArrayList.get(ArrayList.java:311)
1802-21 13:27:33.343: ERROR/AndroidRuntime(307): at com.androidpeople.xml.parsing.XMLParsingExample.onCreate(XMLParsingExample.java:72)
1902-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
2002-21 13:27:33.343: ERROR/AndroidRuntime(307): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
Und hier die 3 Dateien:
MyXMLHandler.java
SitesList.java
XMLParsingExample.java
Liebe Grüße,
Malte
P.s. Irgentwie funktioniert der Code Tag bei mir net richtig, deswegen stellenweise die Raute.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.