如何从db获取存储图像的URI并在图像视图中显示

时间:2015-12-11 05:34:38

标签: android database image sqlite bitmap

我正在尝试获取保存在我本地sql dB中的图像URL并将其显示在图像视图中,但是我的图像上有一些错误如何为null ..我已经在阅读图像的名称并且它工作正常但是图像uri不能显示,因为URI正在以字符串格式获取它所以需要首先解码才能显示..有没有办法在我的光标获取URI时解码它并解码它在list-View中发送它显示。

请参阅以下代码: ----------->>>>>>>>>>>>显示提取数据的类

public class NewsFeed_Viewoverlay extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newsfeed_viewoverlay);
        DatabaseHelper helper;
        ImageView list_image;
        VideoView list_video;
        helper= new DatabaseHelper(this.getApplicationContext());
        list_image= (ImageView) findViewById(R.id.list_image);
        list_video = (VideoView)findViewById(R.id.list_video);

//-------------------------------------------------------------------->>>>>>>>XXXXXXXXXXX<<<<<<<<<<-----------------------
        Cursor cursor = helper.getCursor();
        startManagingCursor(cursor);
        //setup for MApping in view fields
        String [] fromFieldNames=new String[]{helper.KEY_NAME,helper.KEY_IMAGE};

       //list_image.setImageBitmap(BitmapFactory.decodeFile(helper.KEY_IMAGE));
       // list_video.setVideoURI(Uri.parse(helper.KEY_FILE));

        int[] toViewID= new int[]{R.id.title, R.id.list_image};
        SimpleCursorAdapter myadaptor= new SimpleCursorAdapter(this, R.layout.list_row, cursor,fromFieldNames,toViewID );
        ListView mylist= (ListView)findViewById(R.id.list);
        mylist.setAdapter(myadaptor);


        Log.i("READ-->Path in DB->", "" + helper.KEY_NAME + helper.KEY_IMAGE);

    }

----------------------&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;光标的数据库类------ ----------

public void Insert(String imgpath, String vidPath, String name ) throws SQLException {

    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_IMAGE, imgpath);
    values.put(KEY_FILE, vidPath);
    values.put(KEY_NAME,name);

    db.insert(TABLE_Images, null, values);
    db.close();
    Log.i("INSERTED-->Path in DB->", "" + imgpath);
    Log.i("INSERTED-->Path in DB->", "" + vidPath);
    Log.i("INSERTED-->Path in DB->", "" + name);

}
    public static final String[] KEY= new String[] {KEY_ID,KEY_NAME,KEY_IMAGE,KEY_FILE};
public Cursor getCursor()
{
    String where=null; ContentResolver resolver;
    db= this.getReadableDatabase();
    //db.rawQuery("select image , name from images",null);
    //Cursor cursor = db.rawQuery("select _id, name from images",null);
    Cursor cursor= db.query(true,TABLE_Images,KEY,where,null,null,null,null,null,null);
    if (cursor!=null)
    {
        cursor.moveToFirst();

    }
    return cursor;

}

请参考任何链接或至少告诉我是否有其他选择。

3 个答案:

答案 0 :(得分:0)

将URI作为字符串存储在数据库中,然后稍后加载。

//这将以字符串格式获取uri

String s = mUri.toString();

从数据库中检索字符串时,重建URI如下:

//这会将字符串解码为URI

Uri mUri = Uri.parse(s);

了解更多信息,请点击here

链接

答案 1 :(得分:0)

从数据库中检索URI后,您需要将其解析为URI格式。

Uri mUri = Uri.parse("Data you got from db");

之后,您可以在ImageView中显示它。

imageView.setImageURI(mUri);

答案 2 :(得分:0)

首先将图像uri存储在String变量中(如imagePath)。 然后解码你的字符串变量(imagePath)。然后按照代码设置imagePath:

setImageBitmap(BitmapFactory.decodeFile(的ImagePath));