2013-01-04 66 views
0

我试图使用通用图像加载器将图像加载到gridview,但当应用程序加载时我的应用程序似乎正在崩溃,而我无法识别问题。我从数组中加载图像,然后调用图像适配器来填充它们。将图像加载到Gridview中

所有帮助将不胜感激:)

public class MainActivity extends Activity { 

String[] imageUrls; 

DisplayImageOptions options; 
protected ImageLoader imageLoader = ImageLoader.getInstance(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Bundle bundle = getIntent().getExtras(); 
    imageUrls = bundle.getStringArray(Extra.IMAGES); 

    options = new DisplayImageOptions.Builder() 
     .showStubImage(R.drawable.stub_image) 
     .showImageForEmptyUri(R.drawable.image_for_empty_url) 
     .cacheInMemory() 
     .cacheOnDisc() 
     .bitmapConfig(Bitmap.Config.RGB_565) 
     .build(); 

    GridView gridView = (GridView) findViewById(R.id.gridview); 
    gridView.setAdapter(new ImageAdapter()); 


} 

public class ImageAdapter extends BaseAdapter { 
    @Override 
    public int getCount() { 
     return imageUrls.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final ImageView imageView; 
     if (convertView == null) { 
      imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     imageLoader.displayImage(imageUrls[position], imageView, options); 

     return imageView; 
    } 
} 

}

logcat的错误:

01-04 14:43:40.990: E/AndroidRuntime(11510): FATAL EXCEPTION: main 
01-04 14:43:40.990: E/AndroidRuntime(11510): java.lang.RuntimeException: ImageLoader must be init with configuration before using 
01-04 14:43:40.990: E/AndroidRuntime(11510): at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:175) 
01-04 14:43:40.990: E/AndroidRuntime(11510): at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:131) 
01-04 14:43:40.990: E/AndroidRuntime(11510): at com.example.breaktheglass.ImageGridActivity$ImageAdapter.getView(ImageGridActivity.java:96) 

所以我加了这一点:

ImageLoader.init(ImageLoaderConfiguration.createDefault(this)); 

之前我叫imageloader(在th下面Ë.getInstance),但是它只是给我这个错误:

Syntax error on token "init", Identifier expected after this token 

我不太知道从哪里何去何从..

+0

PLZ共享全logcat ... –

+0

更新与完整的logcat =) – Jonny07

+0

显示更新的代码与配置设置.. –

回答

1

只要改变你这样的代码序列,

protected ImageLoader imageLoader; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    imageLoader = ImageLoader.getInstance(); 
    imageLoader.init(ImageLoaderConfiguration.createDefault(this)); 

让我知道发生什么事..

有关详细信息,看看https://github.com/nostra13/Android-Universal-Image-Loader

+0

感谢工作。看来我试图在实例化它之前尝试获取实例lol ...:P – Jonny07