ListView füllen Fehler

  • 1 Antworten
  • Letztes Antwortdatum
M

masterkot

Neues Mitglied
0
Hallo zusammen,
ich habe einen Fehler, den ich nicht so ganz verstehe und hoffe, dass mir jemand von euch da helfen kann:
Ich möchte mein ListView folgendermaßen füllen:

Code:
public void setShown() {
    	ListView listView = (ListView) app.findViewById(R.id.listView1);
        
        ArrayList<searchlistitems> menu = new ArrayList<searchlistitems>();
        menu = new ArrayList<searchlistitems>(); 
        menu = searchConfig.LoadModel(this);
        
	    String ids[] = new String[searchConfig.menu.size()];
	    for (int i= 0; i < ids.length; i++){
	
	    	ids[i] = Integer.toString(i+1);
	    }
	
	    searchAdapter adapter = new    searchAdapter(this,R.layout.searchlistrow, ids);
	    listView.setAdapter(adapter);
        
    }

Searchconfig:
Code:
public static ArrayList<searchlistitems> LoadModel(Context con) {
		DataSource datasource;
		
		datasource = new DataSource(con);
		datasource.open();
			List<special> speciallst= datasource.getSearchSpecial(0, 0, 0, 0, "");
		datasource.close();

		menu = new ArrayList<searchlistitems>();
//		menu.add(new searchlistitems(1,"No_Image_Available.png","","","","",""));
		for (int i = 0; i < speciallst.size(); i++) {
			special spec = new special();
			spec = speciallst.get(i);
			menu.add(new searchlistitems(spec.getId(),"No_Image_Available.png",spec.getClub_name(),spec.getDate(),spec.getName(),spec.getMusic_name(),spec.getDescr()));
		}
		return menu;
	}

searchAdapter:
Code:
@Override
	    public View getView(int position, View convertView, ViewGroup parent) {

	        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

	        View rowView = inflater.inflate(rowResourceId, parent, false);
	        ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView);
	        TextView textViewtitle = (TextView) rowView.findViewById(R.id.textViewTitle);
	        TextView textView1 = (TextView) rowView.findViewById(R.id.textView1);
	        TextView textView2 = (TextView) rowView.findViewById(R.id.textView2);
	        TextView textView3 = (TextView) rowView.findViewById(R.id.textView3);
	        TextView textView4 = (TextView) rowView.findViewById(R.id.textView4);

	        int id = Integer.parseInt(Ids[position]);
	        String imageFile = searchConfig.GetbyId(id).IconFile;

	        textViewtitle.setText(searchConfig.GetbyId(id).title);
	        textView1.setText(searchConfig.GetbyId(id).text1);
	        textView2.setText(searchConfig.GetbyId(id).text2);
	        textView3.setText(searchConfig.GetbyId(id).text3);
	        textView4.setText(searchConfig.GetbyId(id).text4);
	        
	        // get input stream
	        InputStream ims = null;
	        try {
	            ims = context.getAssets().open(imageFile);
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        // load image as Drawable
	        Drawable d = Drawable.createFromStream(ims, null);
	        // set image to ImageView
	        imageView.setImageDrawable(d);
	        return rowView;

	    }

Ich bekomme folgenden Fehler:
Code:
10-31 07:45:52.357: E/AndroidRuntime(8972): FATAL EXCEPTION: main
10-31 07:45:52.357: E/AndroidRuntime(8972): java.lang.NullPointerException
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at com.android.adapter.searchAdapter.getView(searchAdapter.java:58)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.AbsListView.obtainView(AbsListView.java:2159)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.ListView.measureHeightOfChildren(ListView.java:1246)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.ListView.onMeasure(ListView.java:1158)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1229)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:301)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.View.measure(View.java:15518)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.Choreographer.doCallbacks(Choreographer.java:562)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.Choreographer.doFrame(Choreographer.java:532)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.os.Handler.handleCallback(Handler.java:725)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.os.Handler.dispatchMessage(Handler.java:92)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.os.Looper.loop(Looper.java:137)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at android.app.ActivityThread.main(ActivityThread.java:5041)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at java.lang.reflect.Method.invoke(Method.java:511)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-31 07:45:52.357: E/AndroidRuntime(8972): 	at dalvik.system.NativeStart.main(Native Method)


Das Problem wird behoben, wenn ich in die searchConfig einen festen Eintrag hinzufüge (Ist oben im Code direkt über der for-Schleife auskommentiert). Wenn ich diese rausnehme, dann bekomme ich den Fehler. Scheint ja so, dass ich ohne diesen festen Eintrag keine Einträge habe und dann ein Fehler aufkommt mit dem Adapter. Allerdings werden die Daten mit angezeigt, wenn ich diesen festen Eintrag drin habe. Es funktioniert also immer, so wie es soll, wenn ich den festen Eintrag drin habe. Jetzt ist mir aber überhaupt nicht klar, woran das liegen könnte.
Kann mir jemand helfen?

Danke und Gruß
Mats

Der ursprüngliche Beitrag von 09:01 Uhr wurde um 09:10 Uhr ergänzt:

Hallo,
kann wieder gelöscht werden, habe den Fehler grade selber gefunden :D

Es lag daran, dass die ID, die in das menu eingetragen wird, bei 1 anfangen muss und bei mir der erste Eintrag die ID 2 hatte :D
 
Code:
10-31 07:45:52.357: E/AndroidRuntime(8972):     at com.android.adapter.searchAdapter.getView(searchAdapter.java:58)
Was ist denn Zeile 58 in deinem searchAdapter?

Achja: Es ist Konvention, dass man Klassennamen mit Großbuchstaben anfangen läßt und Variablen mit Kleinbuchstaben. :)
 
Zurück
Oben Unten