Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将存储在数据库中的图像以字符串形式显示为真实图像?_Android_Sql_Database_Image_Bitmap - Fatal编程技术网

Android 如何将存储在数据库中的图像以字符串形式显示为真实图像?

Android 如何将存储在数据库中的图像以字符串形式显示为真实图像?,android,sql,database,image,bitmap,Android,Sql,Database,Image,Bitmap,如何检索作为真实图像存储在数据库中的图像,我使用了两种不同的方法从数据库中获取图像,但都不适用于我 我有一个类,我试图从数据库中以listview的形式检索图像 在编制项目时,我收到以下信息: resolveUri在错误的位图uri上失败 这是我的课程之一: public class ListProp extends ListActivity { private static final String TAG = ListProp.class.getSimpleName(); private

如何检索作为真实图像存储在数据库中的图像,我使用了两种不同的方法从数据库中获取图像,但都不适用于我

我有一个类,我试图从数据库中以listview的形式检索图像

在编制项目时,我收到以下信息:

resolveUri在错误的位图uri上失败

这是我的课程之一:

public class ListProp extends ListActivity {

private static final String TAG = ListProp.class.getSimpleName();
private static final String TAG_PHOTOS = "photoThumbnailUrl";
private SQLiteDatabase database;
private CursorAdapter dataSource;
Cursor cursor;
private static final String fields[] = { "photoThumbnailUrl",
        BaseColumns._ID };

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DBHelper helper = new DBHelper(this);
    database = helper.getReadableDatabase();
    database = helper.getWritableDatabase();
    Cursor data = database.query(DBHelper.TABLE, fields, null, null, null,
            null, null);

    dataSource = new SimpleCursorAdapter(this, R.layout.image, data,
            fields, new int[] { R.id.image1 });

    setListAdapter(dataSource);
    System.out.println(dataSource);
    database.close();

    // selecting single ListView item
    final ListView lv = getListView();

    // Launching new screen on Selecting Single ListItem
    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            System.out.println("I'm fine here");

            ImageView image = (ImageView) findViewById(R.id.image1);

            // get it as a ByteArray
            while (cursor.moveToFirst())
                ;
            byte[] imageByteArray = cursor.getBlob(cursor
                    .getColumnIndex(DBHelper.C_PHOTOS));

            // convert it back to an image
            ByteArrayInputStream imageStream = new    
                            ByteArrayInputStream(imageByteArray);
            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            Drawable d = new BitmapDrawable(bitmap);
            image.setImageResource(R.drawable.ic_launcher);
            cursor.close();
            lv.addView(image);

        }

    });

}
public类ListProp扩展了ListActivity{
私有静态最终字符串标记=ListProp.class.getSimpleName();
私有静态最终字符串标记\u PHOTOS=“photoThumbnailUrl”;
专用数据库;
专用游标适配器数据源;
光标;
私有静态最终字符串字段[]={“photoThumbnailUrl”,
BaseColumns.\u ID};
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBHelper=newdbhelper(this);
database=helper.getReadableDatabase();
database=helper.getWritableDatabase();
游标数据=database.query(DBHelper.TABLE,字段,null,null,
空,空);
dataSource=新的SimpleCursorAdapter(这个,R.layout.image,数据,
字段,新的int[]{R.id.image1});
setListAdapter(数据源);
System.out.println(数据源);
close()数据库;
//选择单个ListView项
最终ListView lv=getListView();
//在选择单个列表项时启动新屏幕
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
System.out.println(“我在这里很好”);
ImageView图像=(ImageView)findViewById(R.id.image1);
//把它当作备用品
while(cursor.moveToFirst())
;
字节[]imageByteArray=cursor.getBlob(游标
.getColumnIndex(DBHelper.C_照片));
//将其转换回图像
ByteArrayInputStream imageStream=新建
ByteArrayInputStream(imageByteArray);
位图位图=BitmapFactory.decodeStream(imageStream);
可绘制d=新的位图可绘制(位图);
setImageResource(R.drawable.ic_启动器);
cursor.close();
lv.addView(图像);
}
});
}

}

尝试以下教程:

您必须使用BitmapFactory函数decodeByArray:

.setImageBitmap(BitmapFactory.decodeByteArray
希望这有帮助