2013-05-12 4 views
0

Похоже, что у него есть проблема с настройкой Bitmap, но я не знаю почему. Это первый раз, когда я использую эту библиотеку, поэтому каждая помощь очень ценится! Строка, где я получаю ошибку, - это то, где я делаю setImageBitmap (myBitmap). Вот код моего адаптера:Универсальный загрузчик изображений Android (nostra13): получение nullPointerException

public class CustomGalleryAdapter extends BaseAdapter { 

private List<String> imageUrls; 
private Context context; 

// Variabili per Android Universal Image Loader 
private ImageLoader imageLoader; 

public CustomGalleryAdapter(Context context, Context appContext, List<String> imageUrls){ 
    this.imageUrls = imageUrls; 
    this.context = context; 

    // Inizializza Android Universal Image Loader 
    imageLoader = ImageLoader.getInstance(); 
    imageLoader.init(ImageLoaderConfiguration.createDefault(appContext)); 
} 

@Override 
public int getCount() { 
    return imageUrls.size(); 
} 

@Override 
public Object getItem(int position) { 
    return "file://"+imageUrls.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

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

    // Classe che contiene l'imageView 
    ViewHolder holder; 

    // Se viene creato e non "riutilizzato" 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     holder.imageView = new ImageView(context);  
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    // Decodifica il Bitmap 
    Bitmap myBitmap = BitmapFactory.decodeFile(imageUrls.get(position)); 

    // Setta il bitmap nella imageView 
    holder.imageView.setImageBitmap(myBitmap); 
    holder.imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT, GridView.LayoutParams.WRAP_CONTENT)); 

    // Ottiene l'URL formattato per la libreria 
    String imageUrl = "file://"+imageUrls.get(position); 

    // Carica e visualizza l'immagine 
    imageLoader.displayImage(imageUrl, holder.imageView); 

    return holder.imageView; 
} 

// Classe "wrapper" per l'imageView 
static class ViewHolder { 
    ImageView imageView; 
} 
} 

А вот LogCat:

05-12 10:55:23.841: E/AndroidRuntime(8691): FATAL EXCEPTION: main 
05-12 10:55:23.841: E/AndroidRuntime(8691): java.lang.NullPointerException 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at it.romagnoli.andrea.myrehearsals.adapters.CustomGalleryAdapter.getView(CustomGalleryAdapter.java:69) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.AbsListView.obtainView(AbsListView.java:2143) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.GridView.makeAndAddView(GridView.java:1341) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.GridView.makeRow(GridView.java:341) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.GridView.fillDown(GridView.java:283) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.GridView.fillFromTop(GridView.java:417) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.GridView.layoutChildren(GridView.java:1229) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.AbsListView.onLayout(AbsListView.java:1994) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.View.layout(View.java:14008) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.View.layout(View.java:14008) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.View.layout(View.java:14008) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.View.layout(View.java:14008) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.View.layout(View.java:14008) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewGroup.layout(ViewGroup.java:4373) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1711) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.os.Handler.handleCallback(Handler.java:725) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.os.Looper.loop(Looper.java:137) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-12 10:55:23.841: E/AndroidRuntime(8691):  at dalvik.system.NativeStart.main(Native Method) 
+0

Вы можете использовать это изображениеLoader.displayImage (imageUrls.get (position), image, options); первый параметр - это url, второй параметр - iamgeview, третий параметр - параметры отображения. UIL загрузит изображение. U нужно указать URL-адреса – Raghunandan

ответ

1

Если convertView не null вы не имеете ViewHolder вернуться с getTag() (вы не установите ViewHolder как тег в любом месте вашего кода на convertView). Кроме того, если вы просто использовать ImageView вам действительно не нужен ViewHolder, в основном ViewHolder будет иметь ссылку на ImageView, то ViewHolder будет установлен в качестве тега в представлении возвращенного getView() способом, который является точной ImageView держатель указывает. Просто используйте ImageView.

+0

Это была моя проблема! Большое спасибо! (Мне пришлось также удалить неиспользуемое растровое декодирование, моя ошибка, потому что библиотека будет декодировать сами изображения) –

Смежные вопросы