¿Por qué estoy obteniendo nullpointer en onMeasure en GridView
Estoy recibiendo una excepción nullpointer cuando intento establecer imágenes en una vista de cuadrícula usando Universal Image Loader. El fallo se produce justo cuando se descarga la primera imagen y se descarga exactamente una imagen antes de que la aplicación se bloquee. (Comprobado con httpscoop)
Editar: Esto es incorrecto. El bloqueo ocurre antes de descargar la primera imagen, por lo que probablemente intenta medir una imagen que no existe.
- ¿Cómo cargar la miniatura con Universal Image Loader para Android?
- Ver buscapersonas con cargador de imágenes universal sin error de memoria
- Acceso a imágenes protegidas en el cargador de imágenes universal
- Compruebe si la imagen está en caché - Universal Image Loader
- Universal Image Loader con 2 visualizadores
Esta es mi rejilla
<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"/>
El diseño gridview es simplemente un 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" />
Mi 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; }
Configuración de ImageLoader
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();
Y Opciones
galleryThumbImageOptions = new DisplayImageOptions.Builder() .showStubImage(R.drawable.p1_cover) .cacheOnDisc() .bitmapConfig(Bitmap.Config.RGB_565) .build();
Y la excepción
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)
- Gridview - Haga clic en la imagen para ver la imagen en Viewpager
- Cambiar el tamaño del mapa de bits después de cargarlo con Universal Image Loader
- No se pudo encontrar la clase después de la actualización de android sdk 22
- Uso de Android-UIL, ¿Cómo detener la descarga?
- FileNotFoundException con Universal Image Loader
- ¿Cómo usar el cargador universal de imágenes para las miniaturas de videos en android?
- Cargador de imágenes universal roundedBitmapDisplayer issues
- ¿Cómo configurar descargador personalizado en Universal Image Loader?
Es un error devolver null
de getView()
, debería devolver el elemento de fila que acaba de inflar o convertir.
- Android Imageswitcher: cambia las imágenes periódicamente?
- ¿Es aconsejable desarrollar y publicar una aplicación Android sin probarla primero en un dispositivo real?