Post 图片来自数据库

Post images from the DataBase

我有一个名为 iiti 的数据库,它有一个名为 ImgName 的字符串, ImgName 的值,它是 Drawable 文件夹中图像的名称。 我想 post 在 imageView

上显示该图像
TextView descText = (TextView) findViewById(R.id.descriptionText);
        descText.setText(iiti.getneighborhood() + "\n");

ImageView iv = (ImageView) findViewById(R.id.imageView);
    int resourceId = this.getResources().getIdentifier(iiti.getLatLat(),"drawable",this.getPackageName());
    iv.setImageResource(resourceId);

上面的代码只是使 ImageView 成为白色空白图像,如果我尝试使用此代码

ImageView iv = (ImageView) findViewById(R.id.imageView);
        iv.setImageResource(R.drawable.hii);
        //hii is a png image in the drawable folder

这是我的 xml 文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".DetailActivity">

    <TextView
        android:id="@+id/cityText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="London"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/neighborhoodText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/cityText"
        android:gravity="center"
        android:text="West End"
        android:textSize="20sp" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/cityText"
        android:layout_marginTop="20dp"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitStart"
            android:src="@drawable/london_photo"/>

        <fragment xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1" />

    </LinearLayout>

</RelativeLayout>

应用程序崩溃了这是 Logcat:

03-27 15:21:10.984 9542-9542/com.example.android.mymaps E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.mymaps, PID: 9542
java.lang.RuntimeException: Canvas: trying to draw too large(110250000bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
at android.graphics.Canvas.drawBitmap(Canvas.java:1420)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)

我该如何解决这个错误?

在您的 Activity 中试试这个:

val resourceId = this.getResources().getIdentifier(iiti.getImgName(), "drawable", this.getPackageName())
iv.setImageResource(resourceId)

或者在您的片段中:

int resourceId = getActivity().getResources().getIdentifier(iiti.getImgName(), "drawable", getActivity().getPackageName());
iv.setImageResource(resourceId);

如有任何问题请检查 source

编辑:

这是你的崩溃:

Canvas: trying to draw too large(110250000bytes) bitmap.

所以您要绘制的位图太大了...就是这样。压缩你的文件,改变它的大小或做任何缩小它的大小。如果你正在犹豫 - 这个文件有 110.25MB 大。

将图像缩小为:

Bitmap b = BitmapFactory.decodeResource(context.getResources(),
                                       resourceId);
iv.setImageBitmap(Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight/2, false));