在AddClaims
中,我将ListView
(包含数据和图片)保存到SQLite数据库中。
AddClaims
ArrayList<ImageAndText> images=new ArrayList<ImageAndText>();
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // button is clicked
SB.insertStaffBenefit(images, a); // SB is the object of StaffAPI
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
});
}
StaffAPI
public long insertStaffBenefit(ArrayList<ImageAndText> imageText,long id)
{
id1=id;
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
for(ImageAndText i:imageText) {
String description=i.getDescription();
Bitmap image=i.getImage();
byte[]data=getBitmapAsByteArray(image);
values.put(MydatabaseHelper.Description,description);
values.put(MyDatabaseHelper.Image, data);
database.insert(MyDatabaseHelper.TABLE_STAFF_BENEFIT, null, values);
}
database.close();
return 0 ;
}
public static byte[] getBitmapAsByteArray(Bitmap bitmap)
{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
Log.e("TAG", "Blob size: " + outputStream.size() / 1024 + " KB");
return outputStream.toByteArray();
}
我不确定这是否是在listView
中保存图片的正确方法,但它可以显示Blob
大小。所以我假设图像可以保存。
接下来,我想检索所有图片并加载到 EditStaff
中的ListView
EditStaff
public void BuildEditStaffList(long id)
{
Log.e("S", id+"");
sqlcon.open();
Cursor cursor1=sqlcon.readName(id);
String[] columns=new String[]{
MydatabaseHelper.image,MyDatabaseHelper.Description};
int[] to=new int[]
{
R.id.image,R.id.description};
dataAdapter = new SimpleCursorAdapter(getActivity(), R.layout.retrieve_staff,
cursor1,
columns,
to,
0);
listViewEdit.setAdapter(dataAdapter);
}
StaffAPI
public Cursor readName(long id)
{
Log.e("ID",id+"");
Cursor c=database.rawQuery(" SELECT _id, Image, Description FROM " + MyDatabaseHelper.TABLE_STAFF_BENEFIT + " WHERE Ts_id = ?", new String[]{String.valueOf(id)}, null);
if (c != null) {
c.moveToFirst();
}
Log.e("ID",id+"");
return c;
}
当我尝试将图像和文本检索到ListView EditStaff时,应用程序崩溃了。我检查了logCat,但它只会让我
W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41e46c80)
删除 EditStaff 中的MydatabaseHelper.image
和R.id.image
后,可以在listView
上显示该文字。所以我猜应用程序崩溃是因为图像。有没有办法检查图像是否在SQLite
中正确插入?感谢
答案 0 :(得分:1)
您应该将图片保存在本地存储中,并存储在数据库中访问它的路径。
请注意java方法应该尊重camel case语法,从小写开始。
此外,使用工作线程与SQLite数据库进行交互