我在这里有一个String字符串列表
public String [] myRemoteImages = {imageUrl,imageUrl2,imageUrl3,imageUrl4,imageUrl5,imageUrl6,imageUrl7};
在我检索字符串后的postexecute中,我记录它们以确保它们不为空。 然后我
protected void onPostExecute(Void notUsed){
Log.e("URLS", imageUrl + imageUrl2 + imageUrl3 + imageUrl4 + imageUrl5 + imageUrl6 + imageUrl7);
adapter=new LazyAdapter(MainMenu.this, myRemoteImages);
((Gallery) findViewById(R.id.gallery))
.setAdapter(adapter);
adapter.notifyDataSetChanged();
检索它们后,我创建一个BaseAdapter实例,它接受两个参数并将其设置为一个图库。
这是我的适配器。
public LazyAdapter(Activity a, String[] d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.lazyitemt, null);
ImageView image=(ImageView)vi.findViewById(R.id.imageView);
image.setLayoutParams(new LinearLayout.LayoutParams(250, 250));
imageLoader.DisplayImage(data[position], activity, image);
return vi;
}
}
现在我在FileCache类中的这个方法中得到一个NullPointer异常。它试图检查图像是否在缓存中。但是我在
收到错误public File getFile(String url){
//Error here Nullpointer.
String filename=String.valueOf(url.hashCode());
File f = new File(cacheDir, filename);
return f;
}
我正在提供带有url的字符串列表我不知道它为什么会出现nullpointer异常?
我这样调用getBitmap。
private Bitmap getBitmap(String url)
{
File f=fileCache.getFile(url);
//from SD cache
Bitmap b = decodeFile(f);
if(b!=null)
return b;
//from web
try {
Bitmap bitmap=null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
} catch (Exception ex){
ex.printStackTrace();
return null;
}
}