将检索到的值加载到 listView 时应用程序崩溃
Posted
技术标签:
【中文标题】将检索到的值加载到 listView 时应用程序崩溃【英文标题】:App crashed when load retrieved value to listView 【发布时间】:2016-03-19 05:18:09 【问题描述】:在AddClaims
中,我将ListView
(带有数据和图像)保存到SQLite 数据库中。
添加声明
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);
);
员工API
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
编辑人员
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);
员工API
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
?谢谢
【问题讨论】:
【参考方案1】:您应该将图片保存在本地存储中,并将访问它的路径存储在数据库中。
请注意 java 方法应该尊重驼峰式语法,以小写开头。
另外,使用工作线程与 SQLite 数据库交互
【讨论】:
那么这是保存多张图片的唯一方法吗?不能使用位图? 您的方式应该可行,但不推荐。我认为您的原始请求在 where 子句中有问题。一种 。在 Ts 和 _id 之间缺少。 如果对您有帮助,请将问题标记为已解决 它没有多大帮助。不过,感谢您的建议以上是关于将检索到的值加载到 listView 时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何从flutter中从异步任务中检索到的数据中将图像加载到卡片中?
将检索到的值与javascript和jquery结合起来[重复]
Android:如何让我检索到的(来自 mysql)JSON 解析数据添加到 ListView 每分钟刷新一次
Firebase/Android:将检索到的值从 Firebase 添加到 arraylist 会返回空指针异常