我正在尝试获取保存在我本地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;
}
请参考任何链接或至少告诉我是否有其他选择。
答案 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));