Kal*_*gar 4 sqlite android listview
我想为我的商店创建一个库存应用程序。我创建了一个活动,用于获取产品名称、购买价格和销售价格,然后拍摄产品照片并将主题保存到 ListView。我正在使用 Sqlite。我无法保存这些。
这是我获取信息的代码:
package com.kalagar.warehouse;
import java.io.ByteArrayOutputStream;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
public class AddNew extends Activity implements View.OnClickListener {
ImageButton ib;
Button b;
ImageView iv;
Intent i;
final static int CameraData = 0;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addnew);
startAddNew();
}
private void startAddNew() {
ib = (ImageButton) findViewById(R.id.ibTakePic);
b = (Button) findViewById(R.id.bSave);
iv = (ImageView) findViewById(R.id.ivPic);
b.setOnClickListener(this);
ib.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ibTakePic:
i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CameraData);
break;
case R.id.bSave:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
bmp = (Bitmap) data.getExtras().get("data");
iv.setImageBitmap(bmp);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的数据库:
package com.kalagar.warehouse;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBase {
@SuppressWarnings("unused")
private static class WareHouseDdbHelper extends SQLiteOpenHelper {
private static final String LOGTAG = "WAREHOUSE";
static final String DATABASE_TABLE = "WareHouse";
static final int DATABASE_VERSION = 1;
static final String DATABASE_NAME = "SellList";
static final String ROW_ID = "_id";
static final String ROW_NAME = "nameOfObject";
static final String ROW_KHARID = "ghBuy";
static final String ROW_FOROUSH = "ghSell";
static final String ROW_PICTURE = "picture";
private static final String TABLE_CREATE = "CREATE TABLE "
+ DATABASE_TABLE + " (" + ROW_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + ROW_NAME + " TEXT, "
+ ROW_KHARID + " NUMERIC, " + ROW_FOROUSH + " NUMERIC, "
+ ROW_PICTURE + " TEXT " + ")";
public WareHouseDdbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
Log.i(LOGTAG, "Table has been create");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE);
onCreate(db);
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,你应该阅读一些关于 SQLiteOpenHelpers 的教程。这里有一个适合你。
一旦你用这个做,自己写OpenHelper与像一些基本的方法saveImage()和getListOfImages()等。我敢肯定,你就可以推测这些根据您的需要了。
现在,让我们开始保存图像:接收到位图后,onActivityResult您可以使用以下代码保存它:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
File pictureFile = new File(PATH_IMAGES, "IMG_" + timeStamp + ".jpg");
FileOutputStream fos = new FileOutputStream(pictureFile);
bitmap.compress(CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
Run Code Online (Sandbox Code Playgroud)
将图像写入磁盘后,您可以获取图像的绝对路径并将其保存在您创建的打开助手的数据库中,如下所示:
String imagePath = pictureFile.getAbsolutePath();
yourImageOpenHelper.insertImage(imagePath);
Run Code Online (Sandbox Code Playgroud)
下一步是检索图像列表并使用适合您需要的 ListView 或 GridView 显示它。
在这里,您需要以列表或数组的形式获取保存在数据库中的所有图像。获得列表后,您需要检查图像是否确实存在?您可能认为它们会一直存在,但是如果有人手动删除了图像怎么办?为此,这是一个简单的解决方案
最后,您需要担心的是java.lang.OutOfMemoryError将图像加载到ListView. 如果您自己实现所有内容,您可能想看看有效地显示位图。
如果您没有时间学习或没有准备好接受挑战,您可以随时使用图书馆。这是一个图书馆。
我建议你不要使用任何库,因为它会让你接触到 Android 的基础知识。休息显然取决于你。
希望这可以帮助.. :)
| 归档时间: |
|
| 查看次数: |
5449 次 |
| 最近记录: |