所以我有一个SQLite数据库。我尝试更新,但我的android应用程序中没有错误。当我仅更新名称或成本时,它已成功更新,但图像未显示在我的gridview中。但是当我仅更新图像时,它已成功更新。有人可以在这里帮助我!
这是我的数据库类:
public class Database extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydaringdb";
private static final int DATABASE_VERSION = 2;
public static final String TABLE_PRODUK = "produk";
public static final String KEY_ID_PRODUK = "id";
public static final String KEY_NAMA_PRODUK = "nama_produk";
public static final String KEY_HARGA_PRODUK = "harga_produk";
public static final String KEY_GAMBAR_PRODUK = "gambar_produk";
//for showing 1 product
public ModelProduk getnama(int selection) {
SQLiteDatabase db = this.getReadableDatabase();
String cb = "SELECT * FROM " + TABLE_PRODUK + " WHERE " + KEY_ID_PRODUK + "= '" + selection + "'";
Cursor cursor = db.rawQuery(cb, null);
if (cursor != null)
cursor.moveToFirst();
ModelProduk modelProduk = new ModelProduk();
modelProduk.set_id(Integer.parseInt(cursor.getString(0)));
modelProduk.set_nama(cursor.getString(1));
modelProduk.set_harga(Integer.parseInt(cursor.getString(2)));
modelProduk.set_gambar(cursor.getBlob(3));
return modelProduk;
}
//for update 1 product
public void update(ModelProduk modelProduk) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAMA_PRODUK, modelProduk.get_nama());
values.put(KEY_HARGA_PRODUK, modelProduk.get_harga());
values.put(KEY_GAMBAR_PRODUK, modelProduk.get_gambar());
String where = "id=?";
String[] whereArgs = new String[] {String.valueOf(modelProduk.get_id())};
// update baris
db.update(TABLE_PRODUK, values, where, whereArgs);
}
我的更新班:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_produk);
init();
tambahgambaru.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showFileChooser();
}
});
simpandatau.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
modelProduk.set_nama(deskripsiu.getText().toString());
modelProduk.set_harga(Integer.parseInt(harga_produku.getText().toString()));
modelProduk.set_gambar(getImageByte(bitmap));
db.update(modelProduk);
Toast.makeText(getApplicationContext(), "Data Berhasil Diubah!", Toast.LENGTH_SHORT).show();
}
});
kembaliu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(UpdateProduk.this, Produk.class);
startActivity(i);
finish();
}
});
}
public void refresh(){
produklist = new ArrayList<>();
adapter = new ProdukAdapter( this, produklist);
produklist.clear();
produklist.addAll(db.getAllProduk());
adapter.notifyDataSetChanged();
}
private void init(){
pilih = getIntent().getIntExtra("id_produk", 0);
db = new Database(this);
modelProduk = db.getnama(pilih);
gambar_produku = (ImageView) findViewById(R.id.pilihgambaru);
tambahgambaru = (Button) findViewById(R.id.btaddu);
simpandatau = (Button) findViewById(R.id.btsimpanu);
deskripsiu = (EditText) findViewById(R.id.etdesku);
harga_produku = (EditText) findViewById(R.id.ethargau);
kembaliu = (Button) findViewById(R.id.btkembaliu);
deskripsiu.setText(modelProduk.get_nama());
harga_produku.setText(String.valueOf(modelProduk.get_harga()));
gambar_produku.setImageBitmap(bitmap(modelProduk.get_gambar()));
}
public void showFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Pilih Gambar"), 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode==RESULT_OK) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
gambar_produku.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public byte[] getImageByte(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
byte imageInByte[]=null;
if(bitmap!=null) {
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, stream);
imageInByte=stream.toByteArray();
}
return imageInByte;
}
public Bitmap bitmap (byte[] byteImage){
byte[] outImage = byteImage;
Bitmap image ;
if (outImage != null){
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
image = BitmapFactory.decodeStream(imageStream);
}else {
image= null;
}
return image;
}
}
我的update.xml:
<ImageView
android:id="@+id/pilihgambaru"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@mipmap/ic_launcher"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/btaddu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/pilihgambaru"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="pilih gambar"
android:layout_centerHorizontal="true"
/>
<EditText
android:id="@+id/etdesku"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_below="@id/btaddu"
android:layout_centerHorizontal="true"
android:hint="Masukkan Deskripsi Barang"
android:inputType="textMultiLine"
android:maxLength="100"
/>
<EditText
android:id="@+id/ethargau"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_below="@id/etdesku"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:hint="Masukkan Harga Barang"
android:inputType="number"
android:maxLength="10"
/>
<Button
android:id="@+id/btsimpanu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ethargau"
android:layout_marginTop="10dp"
android:text="simpan"
android:layout_marginLeft="100dp"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/btkembaliu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btsimpanu"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="ke produk"
/>