你好
我用volley加载图片的时候在下面红色的一行遇到如下报错(BitmapCache是有的)
FATAL EXCEPTION: main
java.lang.NullPointerException
部分代码
catergory_listview=(ListView)this.findViewById(R.id.app_config_list_main);
catergory_listview.setAdapter(new CatergorAdapter(this));
public class CatergorAdapter extends BaseAdapter{
private Context ctx;
private RequestQueue mQueue;
private ImageLoader mImageLoader;
public CatergorAdapter(Context ctx) {
this.ctx = ctx;
mQueue = Volley.newRequestQueue(ctx);
mImageLoader = new ImageLoader(mQueue, new BitmapCache());
}
@Override
public int getCount() {
return mImageIds.length;
}
@Override
public Object getItem(int position) {
return mImageIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(ctx).inflate(R.layout.activity_category_item, null);
ImageView imageView = (ImageView) convertView.findViewById(R.id.catergory_image);
TextView catergoryItemTitle = (TextView)convertView.findViewById(R.id.catergoryitem_title);
TextView catergoryItemContent = (TextView)convertView.findViewById(R.id.catergoryitem_content);
ImageListener listener = ImageLoader.getImageListener(imageView, android.R.drawable.ic_menu_rotate, android.R.drawable.ic_delete);
mImageLoader.get(mImageIds[position].toString(), listener);
catergoryItemTitle.setText(mTitleValues[position]);
catergoryItemContent.setText(mContentValues[position]);
//适配显示的图片数组
private Integer[] mImageIds = {R.drawable.catergory_appliance,R.drawable.catergory_book };
BitmapCache.java
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}
------解决方案--------------------
先弄清楚是那个对象报的NullPointerException ,mImageLoader? mImageIds?
------解决方案--------------------
debug一下看那个为空
------解决方案--------------------
mImageLoader在构造中new了,不可能为空
改成下面这个,如果还有空指针,就是mImageLoader.get里的问题了
mImageLoader.get(""+mImageIds[position], listener);
------解决方案--------------------
(mImageIds[position] null ?
------解决方案--------------------
把报错信息给贴出来,nullpointer很好确认的
------解决方案--------------------
我的一篇博客,可以学习学习:
http://blog.csdn.net/gao_chun/article/details/34117083
------解决方案--------------------
你需要在你这个应用程序中配置一些相关的Volley设置项,你应该没有配置。
比如在你的程序里面配置一下
Volley.newRequestQueue这个方法试试,如果还不行,你看看volley还有其他什么要配置的
------解决方案--------------------
//适配显示的图片数组
private Integer[] mImageIds = {R.drawable.catergory_appliance,R.drawable.catergory_book };
这个放到前面定义