GridView mit NullpointerException

  • 6 Antworten
  • Letztes Antwortdatum
D

Didi95

Neues Mitglied
0
Guten Abend,

ich bin gerade dabei eine GridView in meine App zu implementieren. Gibt ja genug Beispiele im Internet, wie man das macht. Allerdings kriege ich eine NullPointerException wenn ich den LayoutInflater ins Spiel bringe. Kann mir da jemand helfen? :confused2:

Code:
mport com.example.vertretung.R;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class MenuAdapter extends BaseAdapter {

	 Context MyContext;
     
     public void ImageAdapter(Context _MyContext)
     {
        MyContext = _MyContext;
     }
     
     @Override
     public int getCount() 
     {
                       /* Set the number of element we want on the grid */
        return 2;
     }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) 
     {
        View MyView = convertView;
       
        //Inflate the layout
        LayoutInflater li = (LayoutInflater) MyContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        
        if ( convertView == null )
        {
                              
           
          
        	//
           MyView = li.inflate(R.layout.gridview_item, null);
           
         
           
           // Add The Image           
           ImageView iv = (ImageView) MyView.findViewById(R.id.grid_item_image);
           iv.setImageResource(R.drawable.vertretung);
        }
        
        return MyView;
     }

     @Override
     public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
     }

     @Override
     public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
     }
  }
 
Logcat?
Wo genau bekommst du denn die Null Pointer? Also in welcher Zeile.

bin mir gerade nicht sicher aber kann das problem evtl. in der getItem Methode sein, da du da null zurück gibst?

Ansonsten ist das ohne log ausgabe aber nur wilde raterei.
 
Das ist die zeile mit dem LayoutInflater. Bin geradr nur am handy deswegen kann ich kein logcat einfügen.

Gesendet von meinem GT-N7000 mit der Android-Hilfe.de App
 
Dann kann ja eigentlich nur MyContext null sein.
 
Ich muss zugeben....das war ein Beispiel einer Gridview. das hab ich einfach nur übernommen und angepasst.
Wie kann ich das Problem lösen? Eigentlich ist es ja ganz logisch, dass MyContext null ist..


Hab hier mal die Logcat: (Zeile 42 LayoutInflater li = (LayoutInflater) MyContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);)

Code:
06-06 15:05:38.138: E/AndroidRuntime(29382): FATAL EXCEPTION: main
06-06 15:05:38.138: E/AndroidRuntime(29382): java.lang.NullPointerException
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at com.example.library.MenuAdapter.getView(MenuAdapter.java:42)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.AbsListView.obtainView(AbsListView.java:2472)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.GridView.onMeasure(GridView.java:1030)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.View.measure(View.java:15562)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.View.measure(View.java:15562)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.View.measure(View.java:15562)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5109)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.View.measure(View.java:15562)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1987)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1228)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1401)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1121)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4598)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.Choreographer.doCallbacks(Choreographer.java:555)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.Choreographer.doFrame(Choreographer.java:525)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.os.Handler.handleCallback(Handler.java:615)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.os.Handler.dispatchMessage(Handler.java:92)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.os.Looper.loop(Looper.java:137)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at android.app.ActivityThread.main(ActivityThread.java:4921)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at java.lang.reflect.Method.invokeNative(Native Method)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at java.lang.reflect.Method.invoke(Method.java:511)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
06-06 15:05:38.138: E/AndroidRuntime(29382): 	at dalvik.system.NativeStart.main(Native Method)
 
Zuletzt bearbeitet:
Naja du initialisiert deinen Context ja nirgends.

Du erstellst eine Variable in

Code:
Context MyContext;

die ist nicht initialisiert. Dann hast du noch deine Funktion

Code:
public void ImageAdapter(Context _MyContext)
     {
        MyContext = _MyContext;
     }

die du nirgends aufrufst und die sowieso relativ überflüssig wirkt.

Entweder du schreibst
Code:
Context MyContext = this;
(der den Context den du eben haben möchtest) oder du benutzt eben deine Funktion weil es so schön ist, dann musst du ihr aber auch einen Context übergeben. :smile:
 
In dem du zum Beispiel den richtigen Constructor einbaust
Das sieht mir doch sehr übernommen aus:
public void ImageAdapter(Context _MyContext)
{
MyContext = _MyContext;
}

mach
public MenuAdapter (Context _MyContext)
{
MyContext = _MyContext;
}

draus
und an der Stelle wo du dein Adapter aufrufst übergibst du halt den Context (z.B. die acitivity)
 
Zurück
Oben Unten