我正在开发基于MCQ的安卓搜索者的Android应用程序。我正在使用SQLite数据库浏览器在app中填充我的数据。一切都很顺利。但是当我试图从sqlite中检索blob(图像)时它正在投掷错误。
以下是我正在尝试的一些代码 - (MainActivity.java)
public List<itemList> getItemList() {
c = myDbHelper.query("EMP_TABLE", null, null, null, null, null, null);
List<itemList> finalitemlist = new ArrayList<itemList>();
itemList itemList;
if (c.moveToFirst()) {
do {
itemList = new itemList(c.getString(1), c.getString(2), c.getString(3), c.getString(4),c.getString(5),c.getString(6),c.getString(7),c.getString(8),c.getBlob(9));
finalitemlist.add(itemList);
} while (c.moveToNext());
}
return finalitemlist;
}
itemList.java
public class itemList {
String questionName;
String option_1;
String option_2;
String option_3;
String option_4;
String ans;
String explanation;
byte[] byteArray;
public itemList(String questionName, String option_1, String option_2, String option_3, String option_4, String ans, String explanation,String ext,byte[] bytes) {
this.questionName = questionName;
this.option_1 = option_1;
this.option_2 = option_2;
this.option_3 = option_3;
this.option_4 = option_4;
this.ans = ans;
this.explanation = explanation;
this.extra=ext;
this.byteArray=bytes;
}
public byte[] getByteArray() {
return byteArray;
}
public void setByteArray(byte[] byteArray) {
this.byteArray = byteArray;
}
public String getExtra() {
return extra;
}
public void setExtra(String extra) {
this.extra = extra;
}
String extra;
public String getQuestionName() {
return questionName;
}
public void setQuestionName(String questionName) {
this.questionName = questionName;
}
public String getOption_1() {
return option_1;
}
public void setOption_1(String option_1) {
this.option_1 = option_1;
}
public String getOption_2() {
return option_2;
}
public void setOption_2(String option_2) {
this.option_2 = option_2;
}
public String getOption_3() {
return option_3;
}
public void setOption_3(String option_3) {
this.option_3 = option_3;
}
public String getOption_4() {
return option_4;
}
public void setOption_4(String option_4) {
this.option_4 = option_4;
}
public String getAns() {
return ans;
}
public void setAns(String ans) {
this.ans = ans;
}
public String getExplanation() {
return explanation;
}
public void setExplanation(String explanation) {
this.explanation = explanation;
}
}
GetView方法来自适配器类 只有一个imageView。我将byte []数组转换为位图并设置为此imageView。
public View getView(int i, View view, ViewGroup viewGroup) {
View v=View.inflate(mContext,R.layout.question_sample_item,null);
TextView questionName= (TextView) v.findViewById(R.id.question_name);
TextView op1= (TextView) v.findViewById(R.id.opt1);
TextView op2= (TextView) v.findViewById(R.id.opt2);
TextView op3= (TextView) v.findViewById(R.id.opt3);
TextView op4= (TextView) v.findViewById(R.id.opt4);
TextView ans= (TextView) v.findViewById(R.id.ans);
TextView ext= (TextView) v.findViewById(R.id.ext);
TextView explanation= (TextView) v.findViewById(R.id.explanation);
ImageView qImage= (ImageView) v.findViewById(R.id.blobimage);
questionName.setText(itemLists.get(i).getQuestionName());
op1.setText("ক. "+itemLists.get(i).getOption_1());
op2.setText("খ. "+itemLists.get(i).getOption_2());
op3.setText("গ. "+itemLists.get(i).getOption_3());
op4.setText("ঘ. "+itemLists.get(i).getOption_4());
ans.setText(" "+itemLists.get(i).getAns()+" ");
explanation.setText(itemLists.get(i).getExplanation());
try {
if (itemLists.get(i).getExtra()!=null){
ext.setText(itemLists.get(i).getExtra());
}
else {
ext.setVisibility(View.GONE);
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (itemLists.get(i).getByteArray()!=null){
Bitmap bitmap= BitmapFactory.decodeByteArray(itemLists.get(i).getByteArray(),0,itemLists.get(i).getByteArray().length);
qImage.setImageBitmap(bitmap);
}
else {
qImage.setVisibility(View.GONE);
}
} catch (Exception e) {
e.printStackTrace();
}
return v;
}
请帮助我。谢谢。如果需要任何其他信息,请通知我。