在这里编程新手。
我正在创建一个应用程序,用于存储商店中所有商品的数据。
该应用有一项活动,可在列表视图中显示库存中的商品名称和数量。 (已完成)
点击列表视图项会转到另一个活动,该活动会显示该特定项目的详细信息,其中包含一张图片(我不知道该怎么做)。
我在数据库中添加了一个像这样的BLOB类型的列。
@Override
public void onCreate(SQLiteDatabase db) {
String SQL_CREATE_ITEMS_TABLE = "CREATE TABLE "
+ ItemEntry.TABLE_NAME + " ("
+ ItemEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ ItemEntry.COLUMN_ITEM_IMAGE + "BLOB, "
+ ItemEntry.COLUMN_ITEM_NAME + " TEXT NOT NULL, "
+ ItemEntry.COLUMN_ITEM_QUANTITY
+ " INTEGER NOT NULL DEFAULT 0, "
+ ItemEntry.COLUMN_ITEM_COST_PRICE
+ " INTEGER NOT NULL, "
+ ItemEntry.COLUMN_ITEM_SELLING_PRICE + " INTEGER NOT NULL);";
db.execSQL(SQL_CREATE_ITEMS_TABLE);
}
我已添加"添加图片" “详细信息”活动中的按钮,单击时,应将用户带到图库并允许选择一张照片并将照片添加到数据库,并在同一活动的图像视图中显示照片。
这是我在addImage按钮上的onClickListener的代码。
addImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
in.setType("image/*");
in.putExtra("crop", "true");
in.putExtra("outputX", 100);
in.putExtra("outputY", 100);
in.putExtra("scale", true);
in.putExtra("return-data", true);
startActivityForResult(in, 1);
}
});
以下是onActivityResult方法的代码。
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
Uri imageUri = data.getData();
mImage.setImageURI(imageUri);
}
}
在上面的代码中,我不知道如何在每个项目的数据库中存储照片。
我检查了其他使用get(" data")方法的答案,该方法导致Nullpoint异常。一些答案使用TEXT类型为图像创建列,而其他答案使用BLOB,因此它确实令人困惑。
我并不担心减慢应用程序速度或耗尽内存,所以请尽可能以最简单的方式帮助我。
答案 0 :(得分:0)
检查以下示例代码块。
转换
cv.put("questPhoto",uri.toString());
检索
strPhoto=cursor.getString(cursor.getColumnIndexOrThrow("questPhoto"));
uriph= Uri.parse(strPhoto);
questions.setImgsoru(uriph);
在列表对象中定义类和适配器。就像这样,
Item.class
public class Item {
String arkadi;
Uri arkresmi;
Integer arkId;
public Item(){
}
public String getArkadi() {
return arkadi;
}
public void setArkadi(String arkadi) {
this.arkadi = arkadi;
}
public Uri getArkresmi() {
return arkresmi;
}
public void setArkresmi(Uri arkresmi) {
this.arkresmi = arkresmi;
}
public Integer getArkId() {
return arkId;
}
public void setArkId(Integer arkId) {
this.arkId = arkId;
}
}
Adapter.class
public class Adapter extends ArrayAdapter<Item> {
Context context;
ArrayList<Item> listarray=new ArrayList<>();
private int resource;
public Adapter(Context context, int resource, ArrayList<Item> listarray) {
super(context, resource, listarray);
this.context=context;
this.resource=resource;
this.listarray=listarray;
}
class ViewTutucuArks{
CircleImageView crcImgpp;
TextView txtarkisim;
ViewTutucuArks(View v){
crcImgpp= (CircleImageView) v.findViewById(R.id.crcimgarkresim);
txtarkisim= (TextView) v.findViewById(R.id.txtarkismi);
}
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view8=convertView;
ViewTutucuArks viewTutucuArks;
if(view8==null){
LayoutInflater layoutInflater= (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view8=layoutInflater.inflate(R.layout.custom_list,parent,false);
viewTutucuArks=new ViewTutucuArks(view8);
view8.setTag(viewTutucuArks);
}
else{
viewTutucuArks= (ViewTutucuArks) view8.getTag();
}
Item itemark=listarray.get(position);
viewTutucuArks.crcImgpp.setImageURI(itemark.getArkresmi());
viewTutucuArks.txtarkisim.setText(itemark.getArkadi());
return view8;
}
}
yourActivity
private void getAndShowQuestionsOfTEOGTR() {
Cursor cursor=mSQLiteDb.rawQuery("...",null);
if (cursor!=null){
if(cursor.moveToFirst()){
do {
ItemQuestions questions=new ItemQuestions();
questions.setStrsoruid(cursor.getString(cursor.getColumnIndexOrThrow("_id")));
strqp=cursor.getString(cursor.getColumnIndexOrThrow("questPhoto"));
uriqp= Uri.parse(strqp);
questions.setImgsoru(uriqp);
//there is more
questArray.add(questions);
}while (cursor.moveToNext());
}cursor.close();
}mSQLiteDb.close();
yourAdapter=new yourAdapter(getApplicationContext(),R.layout.yourCustomList,questArray);
yourList.setAdapter(adapterQuestions);
}
最后,使用ListClickHandler,您可以显示该对象的信息和图像。