Android 未使用Novoda/ImageLoader加载图像
我正在尝试使用ImageLoader库从internet将图像加载到网格视图中。但是,在Android 未使用Novoda/ImageLoader加载图像,android,image,android-gridview,support-image-loader,Android,Image,Android Gridview,Support Image Loader,我正在尝试使用ImageLoader库从internet将图像加载到网格视图中。但是,在imageManager.getLoader().load(fView.pic)处获取空指针异常 谁能告诉我哪里错了 StartApp等级: public class StartApp extends Application { private static ImageManager imageManager; @Override public void onCreate() {
imageManager.getLoader().load(fView.pic)处获取空指针异常代码>
谁能告诉我哪里错了
StartApp等级:
public class StartApp extends Application {
private static ImageManager imageManager;
@Override
public void onCreate() {
super.onCreate();
LoaderSettings settings = new LoaderSettings();
settings.setDisconnectOnEveryCall(true);
settings.setCacheManager(new LruBitmapCache(this));
imageManager = new ImageManager(this, settings);
// // To clean the file cache
// imageManager.getFileManager().clean();
}
public static ImageManager getImageLoader() {
return imageManager;
}
}
活动类别:
public class MainActivity extends Activity {
private GridView gridview;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
gridview = (GridView) findViewById(R.id.gridview);
gridview.setPadding(10, 10, 10, 10);
gridview.setAdapter(new GridImageAdapter(this));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
扩展BaseAdapter的GridView适配器类:
public class GridImageAdapter extends BaseAdapter {
private Context context;
private int width = 270;
private int height = 270;
private int textFactor = 35;
private LayoutInflater layoutInflater;
private String[] nameEvents = {"image1","image2"};
private String[] urls = {"http://api.androidhive.info/images/sample.jpg","http://api.androidhive.info/images/sample.jpg" };
ImageManager imageManager;
ImageTagFactory imageTagFactory;
public GridImageAdapter(Context mContext) {
context = mContext;
layoutInflater = LayoutInflater.from(context);
/*Image Loader*/
imageManager = StartApp.getImageLoader();
imageTagFactory = ImageTagFactory.newInstance(context, R.drawable.ic_launcher);
imageTagFactory.setErrorImageId(R.drawable.not_found);
}
public int getCount() {
return nameEvents.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
FriendView fView = new FriendView();
int imagePadding = 10;
if (convertView == null) {
convertView = new View(context);
convertView = layoutInflater.inflate(R.layout.grid_cell_layout,
null);
// convertView.setBackgroundColor(Color.DKGRAY);
convertView.setPadding(3, 0, imagePadding - 1, imagePadding);
convertView.setBackgroundResource(R.drawable.background_shadow);
convertView
.setLayoutParams(new GridView.LayoutParams(width, height));
} else {
fView = (FriendView) convertView.getTag();
}
fView.pic = (ImageView) convertView.findViewById(R.id.image);
/* height has to be reduced to display the text */
fView.pic.setLayoutParams(new LinearLayout.LayoutParams(width, height
- textFactor));
fView.pic.setAdjustViewBounds(true);
fView.pic.setScaleType(ImageView.ScaleType.FIT_XY);
//((StartApp) context.getApplicationContext()).getImageLoader().getLoader().load(imageView);
fView.name = (TextView) convertView.findViewById(R.id.title);
fView.name.setTextColor(Color.BLACK);
convertView.setTag(fView);
fView.name.setText(nameEvents[position]);
// GridImageAdapter.imageLoader.DisplayImage(urls[position], fView.pic);
((ImageView) fView.pic).setTag(imageTagFactory.build(urls[position],context));
imageManager.getLoader().load(fView.pic);
return convertView;
}
static class FriendView {
TextView name;
ImageView pic;
}
}
提前感谢。首先,不要在适配器中创建imagemanager的另一个对象。执行StartApp.getImageLoader().getLoader().load(fView.pic)
其次,通过添加一些空检查和/或日志记录(如果是空的或不是空的),可以很容易地找到空指针。然后我们就可以知道什么对象是空的
例如:
if(StartApp.getImageLoader().getLoader() != null) {
StartApp.getImageLoader().getLoader().load(fView.pic);
}
看起来您没有正确设置应用程序类
确保在清单中声明应用程序类,如下所示:
<application android:name="class" ...
See answer将帮助您。谢谢@MAC。但是,我正在使用ImageLoader库下载图像,然后将其设置为网格视图适配器。