title: Null Pointer Exception in Adapter
body: <p>My logcat is indicating a null pointer exception, and I don't know how to solve these null pointer exceptions. </p>
  
  <p>Null Pointer exception in my adapter class:</p>
  
  <pre><code>  File dir=new File(Environment.getExternalStorageDirectory(),"/myImages/");
  
    int count=dir.list().length; 
  
    String[] fileNames = dir.list();
  </code></pre>
  
  <p>Check the above lines... that is a value returning null.</p>
  
  <p><strong>My code:</strong></p>
  
  <pre><code>package ImageViewExample.ImageViewExample;
  
     import java.io.File;
  
     import android.R.string;
     import android.app.Activity;
     import android.content.Context;
     import android.content.Intent;
     import android.database.Cursor;
     import android.graphics.Bitmap;
     import android.graphics.BitmapFactory;
     import android.net.Uri;
     import android.os.Bundle;
     import android.os.Environment;
     import android.provider.MediaStore;
     import android.view.View;
     import android.view.ViewGroup;
     import android.widget.AdapterView;
     import android.widget.BaseAdapter;
     import android.widget.Gallery;
     import android.widget.GridView;
     import android.widget.ImageView;
     import android.widget.AdapterView.OnItemClickListener;
  
      public class ImageViewExample extends Activity {
      /** Called when the activity is first created. */
      private Cursor imagecursor, actualimagecursor;
      private int image_column_index, actual_image_column_index;
      GridView imagegrid;
      private int count;
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init_phone_image_grid();
       }
       private void init_phone_image_grid() {
        String[] img = { MediaStore.Images.Thumbnails._ID };
        imagecursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
       img, null,null, MediaStore.Images.Thumbnails.IMAGE_ID + "");
  
  
       System.out.println("path"+managedQuery(MediaStore.Images
      .Thumbnails.EXTERNAL_CONTENT_URI, img, null,null, MediaStore.Images
       .Thumbnails.IMAGE_ID + ""));
        image_column_index =   
       imagecursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
        System.out.println("index"+imagecursor.getColumnIndexOrThrow
       (MediaStore.Images.Thumbnails._ID));
        count = imagecursor.getCount();
        imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
  
        imagegrid.setAdapter(new ImAdapterh(this));
        System.out.println("index"+this);
        imagegrid.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView parent, View v,int position, long id) {
                            System.gc();
        String[] proj = { MediaStore.Images.Media.DATA };
      actualimagecursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      proj,null,null, null);
         actual_image_column_index =   
      actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                    actualimagecursor.moveToPosition(position);
                    String i = actualimagecursor.getString(actual_image_column_index);
                    System.gc();
                    Intent intent = new Intent(getApplicationContext(), ViewImage.class);
                    intent.putExtra("filename", i);
                    startActivity(intent);
              }
        });
      }
  
  
     public class ImAdapterh extends BaseAdapter{
  
     File dir=new File(Environment.getExternalStorageDirectory(),"/Pictures/");
     int count=dir.list().length; 
     String[] fileNames = dir.list();
  
      private Context mContext;
  
     public ImAdapterh(Context c) {
         mContext = c;
      }
  
        public int getCount() {
         return count;
        }
  
        public Object getItem(int position) {
         return null;
        }
  
       public long getItemId(int position) {
         return 0;
        }
  
     // create a new ImageView for each item referenced by the Adapter
       public View getView(int position, View convertView, ViewGroup parent) {
         ImageView imageView = null;        
  
  
       for(String bitmapFileName : fileNames)
       {
            if (convertView == null) 
            {  // if it's not recycled, initialize some attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new Gallery.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);                   
  
                Bitmap bmp = BitmapFactory.decodeFile(dir.getPath() + "/" +   
                 bitmapFileName);
                System.out.println(dir);
                imageView.setImageBitmap(bmp);  
             }else 
             {
             imageView = (ImageView) convertView;            
  
             }
     } 
         return imageView;
         }
        }}
  </code></pre>
  
  <p><strong>Logcat error:</strong></p>
  
  <pre><code>05-04 01:41:31.705: ERROR/AndroidRuntime(1417): FATAL EXCEPTION: main
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417): java.lang.RuntimeException: Unable to  
  start activity  
  ComponentInfo{ImageViewExample.ImageViewExample/ImageViewExample
  .ImageViewExample.ImageViewExample}: java.lang.NullPointerException
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at   
  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.app.ActivityThread.access$2300(ActivityThread.java:125)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.os.Handler.dispatchMessage(Handler.java:99)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.os.Looper.loop(Looper.java:123)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at   
  android.app.ActivityThread.main(ActivityThread.java:4627)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  java.lang.reflect.Method.invokeNative(Native Method)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  java.lang.reflect.Method.invoke(Method.java:521)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  dalvik.system.NativeStart.main(Native Method)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417): Caused by:   
  java.lang.NullPointerException
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  ImageViewExample.ImageViewExample.ImageViewExample$ImAdapterh.&lt;init&gt;
  (ImageViewExample.java:71)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  ImageViewExample.ImageViewExample.ImageViewExample
  .init_phone_image_grid(ImageViewExample.java:49)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at  
  ImageViewExample.ImageViewExample.ImageViewExample.onCreate(ImageViewExample.java:36)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at 
  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     at   
  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
  05-04 01:41:31.705: ERROR/AndroidRuntime(1417):     ... 11 more
  </code></pre>