我有一个ParseObjects数组,它们正在列表视图中显示。三个文本视图被加载到我的自定义单元格中,然后在ParseFile中还有一个图像也应加载。我的代码获得了正确加载的第一个单元格,但在其他每个单元格中都没有加载图像。这是我的代码:
this.origImage = (ParseFile) posts.get(position).get("image");
try {
Log.d("MyMessage", "Gonna convert image");
this.imageData = this.origImage.getData();
this.options = new BitmapFactory.Options();
this.options.inDither = true;
this.options.inPreferredConfig = Bitmap.Config.ARGB_8888;
this.options.inSampleSize = 8;
this.notConvertedYet = BitmapFactory.decodeByteArray(this.imageData, 0, this.imageData.length, this.options);
if (this.notConvertedYet != null)
this.myBitmap = rotateImage(90, this.notConvertedYet);
else
this.myBitmap = this.notConvertedYet;
mHolder.picImageView.setImageBitmap(this.myBitmap);
Log.d("MyMessage", "Converted image");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
发生什么事情搞乱了?
答案 0 :(得分:0)
当它绑定到列表适配器时,
是什么posts.get(position).get("image");
实际上呢?解析SDK是否在解析文件CDN中的实际URL上调用网络Http GET的一系列AsyncTasks?
您可能需要了解更多有关它的功能的原因,因为它可能不如Adapter.getView()所使用的效率高......
任何像Volley这样的图像加载器框架,如通用图像加载器,如AQuery,都会像api一样工作,在那里你可以调用ImageView和图像的CDN URL作为参数。该框架将处理所有图像的多线程,池化Parse.com连接,memCache和fileCache。使用parse在文件CDN中存储位图时,您仍然可以使用任何图像加载框架。
适配器中的AQuery示例......
ImageView thumbnail=(ImageView)vi.findViewById(R.id.imageView1); // thumb image
mAquery.id(thumbnail).width(110).image($thumbUrl_CDN,
true, true, 0, R.drawable.default_video, null, 0, mAspectRatio);
您的代码看起来不错..也许所有imageViews都是黑色的原因是适配器没有时间通过网络加载文件并且循环语句没有阻止UI线程?