I'm getting a nullpointer exception when I try to set images in a gridview using Universal Image Loader. The crash happens just as the first image is downloaded and exactly one image is downloaded before the application crashes. (Checked with httpscoop)
Edit: This is wrong. The crash happens before the first image is downloaded, so it probably tries to measure an image that is non existent.
This is my griditem
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
    android:id="@+id/gridImageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:src="@drawable/ic_launcher"
    android:contentDescription="@string/gallery_grid_image_desc"/>
The gridview layout is simply a gridview
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/galleryPicturesGrid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:verticalSpacing="@dimen/gallery_grid_spacing"
    android:horizontalSpacing="@dimen/gallery_grid_spacing"
    android:numColumns="3" />
My getView
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        ViewHolder holder = null;
        Log.d(TAG, "getView " + position);
        if (view == null) {
            view = ((Activity) context).getLayoutInflater().inflate(
                    R.layout.gallery_grid_item, null);
            holder = new ViewHolder();
            holder.thumb = (ImageView) view.findViewById(R.id.gridImageView);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        Picture picture = mPictures.valueAt(position);
        mImageLoader.displayImage(picture.getThumbUrl(), holder.thumb, mImageOptions);
        return null;
    }
ImageLoader configuration
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            getApplicationContext()).memoryCacheSize(2 * 1024 * 1024)
            .discCache(new UnlimitedDiscCache(cacheDir))
            .denyCacheImageMultipleSizesInMemory()
            .offOutOfMemoryHandling()
            .threadPoolSize(4)
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
            .tasksProcessingOrder(QueueProcessingType.LIFO)
            .imageDownloader(new UrlConnectionImageDownloader(this))
            .build();
and Options
    galleryThumbImageOptions = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.p1_cover)
    .cacheOnDisc()
    .bitmapConfig(Bitmap.Config.RGB_565)
    .build();
and the exception
01-18 10:56:15.434: E/AndroidRuntime(4089): FATAL EXCEPTION: main   
01-18 10:56:15.434: E/AndroidRuntime(4089): java.lang.NullPointerException
01-18 10:56:15.434: E/AndroidRuntime(4089):     at     android.widget.GridView.onMeasure(GridView.java:937)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.View.measure(View.java:8313)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.os.Looper.loop(Looper.java:123)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at android.app.ActivityThread.main(ActivityThread.java:3683)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at java.lang.reflect.Method.invokeNative(Native Method)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at java.lang.reflect.Method.invoke(Method.java:507)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-18 10:56:15.434: E/AndroidRuntime(4089):     at dalvik.system.NativeStart.main(Native Method)
                It is an error to return null from getView(), you should be returning the row item that you just inflated or converted.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With