我已经以这种方式将视频缩略图存储在散列图中:
HashMap cacheBitmap = new HashMap<String, Bitmap>(filesArry.length);
for(String string:filesArry) {
cacheBitmap.put(string, ThumbnailUtils.createVideoThumbnail(fpath + string, MediaStore.Video.Thumbnails.MINI_KIND));
}
filesArry是一个字符串数组,其中包含每个缩略图的视频名称。
问题出在getView(...)方法中:
ImageView imageThumbnail = (ImageView)row.findViewById(R.id.Thumbnail);
imageThumbnail.setImageBitmap(cacheBitmap.get(filesArry[position]));
它在get(...)下给出错误说:&#34; ImageView中的setImageBitmap(android.graphits.Bitmap)无法应用于(java.lang.Object)
我尝试将Hashmap<String, Bitmap>
中的位图更改为Drawable并更改为Object,但这似乎无法解决错误。
感谢任何想法。
答案 0 :(得分:4)
声明中缺少类型参数:
HashMap cacheBitmap = ...
将其更改为:
HashMap<String, Bitmap> cacheBitmap = ...
如果没有这个,该类型实际上是HashMap<Object, Object>
,这就是get
方法返回Object
类型而不是Bitmap
的原因。修复声明将解决您的问题。
更进一步,您的声明将更好地使用接口类型而不是实现:
Map<String, Bitmap> cacheBitmap = ...