Android SAX|ListView NullPointerException

Holger

Aktives Mitglied
Hey Leute,

hab ein kleines Problem und ich hoffe das mir wer von euch helfen kann. Also ich schreibe zur Zeit eine App die News darstellen soll. Die News werden auf der mainpage als ListView Dargestellt und dort liegt auch das Problem, ich finde den Fehler nur nicht.

Ich poste einfach mal den Code:
Activity:
Java:
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

import org.xml.sax.InputSource;

import de.holgerR;
import de.parser.TextNews;
import de.parser.TextNewsParser;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ListView;
import android.content.Intent;

public class StartpageActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.startpage);
		ActivityRegistry.register(this);
		
		final ImageButton homebutton = (ImageButton) findViewById(R.id.HomeButtonStart);
		final ImageButton categorybutton = (ImageButton) findViewById(R.id.CategoryButtonStart);
		
		
		TextNewsParser textNewsParser = new TextNewsParser();
		TextNewsAdapter textNewsAdapter = new TextNewsAdapter(this, textNewsParser.getList());
		ListView lv = (ListView)findViewById(R.id.startpagelist);
		lv.setAdapter(textNewsAdapter);
		
		homebutton.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent startpageIntent = new Intent(StartpageActivity.this, StartpageActivity.class);
				startActivity(startpageIntent);
			}

		});

		categorybutton.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub				
				Intent categoryIntent = new Intent(StartpageActivity.this, CategoryActivity.class);
				startActivity(categoryIntent);
			}

		});

	}
	
	public boolean onCreateOptionsMenu(Menu menu){
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.optionsmenu, menu);
		return true;
	}
	
	public boolean onOptionsItemSelected(MenuItem item){
		switch (item.getItemId()){
		case R.id.exit:
			exit();
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	
	}
	
	public void exit(){
		ActivityRegistry.finischAll();
	}

}

Der ListAdapter:
Java:
public class TextNewsAdapter extends ArrayAdapter<TextNews> {

	private ArrayList<TextNews> textNewsList;
	private Activity context;
	
	public TextNewsAdapter(Context context, ArrayList<TextNews> textNews) {
		super(context, R.layout.topnews_item, textNews);
		this.textNewsList = textNews;
		
		
	}
	
	


	public View getView(int position, View convertView, ViewGroup parent) {
		
		LayoutInflater inflater = context.getLayoutInflater();
		convertView = inflater.inflate(R.layout.topnews_item, null, true);
		TextView title = (TextView)convertView.findViewById(R.id.topnews_topic);
		TextView description = (TextView)convertView.findViewById(R.id.topnews_description);
		ImageView topnews_img = (ImageView)convertView.findViewById(R.id.topnews_image);
		
		
		TextNews textNews = getItem(position);
		title.setText(textNews.getTitle());
		description.setText(textNews.getDescription());
		//TODO URL als Image Resource
		topnews_img.setImageResource(R.drawable.ic_launcher);

		
		return convertView;
	}

	static class ViewHolder {
		TextView title, description;
		ImageView topnews_img;
	}
}

Der XML parser:
Java:
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

public class TextNewsParser {
	
	private ArrayList<TextNews> newslist;
	
	public TextNewsParser(){
		
		try {
			
			URL url = new URL("...");// Internetadresse die eine XML Datei zur Verfügung stellt
			SAXParserFactory saxparserfactory = SAXParserFactory.newInstance();
			saxparserfactory.setNamespaceAware(true);
			SAXParser saxparser = saxparserfactory.newSAXParser();
			XMLReader xmlreader = saxparser.getXMLReader();
			
			TextNewsHandler textnewshandler = new TextNewsHandler();
			xmlreader.setContentHandler(textnewshandler);
			xmlreader.parse(new InputSource(url.openStream()));
			
			newslist = textnewshandler.getNewslist();
			
			
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
		
	}

Also ich bekomm eine Nullpointer-Exception und das Log sagt das diese in dem Adapter auftritt und zwar in Zeile 47. Woran kann das liegen?

Danke schon einmal
 

Holger

Aktives Mitglied
Also durch probieren habe ich jetzt heraus gefunden wo genau der Fehler entsteht. Also sobald ich irgendwelche abfragen auf das Array ausführe entsteht die nullpointer exception. Weiß nur nicht warum. Normal sollte das befüllt sein.
 

Holger

Aktives Mitglied
So Fehler behoben. Für die die es interessiert oder auch ein ähnliches Problem haben, ich musste einfach der Applikation in der Manifest-Datei die Rechte für den Internet-Zugriff geben.
 

Neue Themen


Oben