Android Can';t将图像从SQLite存储到ImageView
我有一个恼人的问题。我试图将图像从drawable文件夹存储到数据库,然后检索它并将其设置在Android Can';t将图像从SQLite存储到ImageView,android,image,sqlite,Android,Image,Sqlite,我有一个恼人的问题。我试图将图像从drawable文件夹存储到数据库,然后检索它并将其设置在ImageView中,但当我尝试将其存储在ImageView中并运行它时,它不会改变我首先放置的默认图像,ImageView。 下面是ImageView所在活动的代码和DB处理程序的代码。主要活动 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s
ImageView
中,但当我尝试将其存储在ImageView
中并运行它时,它不会改变我首先放置的默认图像,ImageView
。
下面是ImageView所在活动的代码和DB处理程序的代码。主要活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView img = (ImageView) findViewById(R.id.maintestImage);
images();
img.setImageBitmap(dbHandler.getImageDiet());
initNewProf();
initExercises();
}
public void images(){ //get the image from the drawable and store it in the base
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.abs)).getBitmap();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] photo = baos.toByteArray();
dbHandler.saveDiet(photo);
}` DB handler
public Bitmap getImageDiet(){ //retrive the image from the base
SQLiteDatabase db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT imagedata FROM "+ TABLE_DIET, null);
byte[] photo = hexStringToByteArray("e04fd020ea3a6910a2d808002b30309d");
while(c.moveToNext())
{
photo=c.getBlob(3);
}
ByteArrayInputStream imageStream = new ByteArrayInputStream(photo);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
imgView.setImageBitmap(theImage);
}
你这样做是为了测试,还是为了学习?也就是说,为什么不直接在
ImageView
-imgView.setImageResource(R.drawable.abs)
上设置资源drawable?因为我想从数据库中动态获取图像。我希望每个对象都有图像。实际上不建议将图像存储在数据库中。如果这些图像已经打包在你的应用程序中,那么只需将它们作为资源使用,如上所述。如果您想在安装后以某种方式检索图像,那么最好将它们存储为文件,并只保存数据库中的路径。如果你一心想做你正在做的事情,那么你需要做一些我们不能真正帮助你的调试,因为c.getBlob(3)
,至少应该抛出一个异常,因为你的查询中只有一列。我还应该提一下,你发布的getImageDiet()
方法没有返回任何东西,这样就不会编译了。在询问调试问题时,请始终提供答案。