如何在LayoutInflater中显示图像

时间:2015-01-11 16:48:09

标签: android image sqlite

问题可能有点明显,但情况如下:

在我的应用程序(googleMaps v2)中,我有一个自定义标记,它有一个图像视图(从相机意图中获取的图像)。因此,一旦应用程序在SQlite数据库中重新启动,我已经保存了再次加载图像所需的所有信息。但问题是当试图将图像加载到布局时,没有显示任何内容,但是当我在我的活动中创建一个Imageview时(即不在布局中),然后显示图像,但显然在地图上我不知道我想要。

所以这是我在ImageView中加载图像的代码从相机意图返回时(这可行)

@Override
  public View getInfoContents(Marker marker)
    {
  View v  = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
  ImageView markerIcon = (ImageView) v.findViewById(R.id.PicView);
Bitmap bitmap = myMarkersHash.get(marker.getId());
markerIcon.setImageBitmap(bitmap);

然后在应用程序重新启动时尝试从数据库加载:

filep = arg1.getString(arg1.getColumnIndex(LocationsDB.FIELD_FILEPATH));
....
View view  = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
ImageView image = (ImageView) view.findViewById(R.id.PicView);
Bitmap myImage = BitmapFactory.decodeFile(filep);
image.setImageBitmap(myImage);

然后没有显示

有谁能告诉我为什么图像不显示? PS没有错误消息或任何我可以添加到此问题的内容。

1 个答案:

答案 0 :(得分:0)

如果要将文件路径存储在filep中,那么它应该是:

Bitmap myImage = BitmapFactory.decodeFile(filep);

在回复下面的评论时,您可以尝试添加配置选项ARGB_8888以保留文件,例如:

filep = arg1.getString(arg1.getColumnIndex(LocationsDB.FIELD_FILEPATH));
....
View view  = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
ImageView image = (ImageView) view.findViewById(R.id.PicView);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap myImage = BitmapFactory.decodeFile(filep, options);
image.setImageBitmap(myImage);