Android操作sqlite数据库之Grid显示图片

da820195da1122 9 0 rar 2024-07-14 14:07:46

在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的、嵌入式的数据库,广泛用于存储应用程序中的数据。本实例将介绍如何在Android应用中操作SQLite数据库,并以Grid形式展示图片。以下是对该主题的详细讲解:

我们需要创建一个SQLite数据库。在Android中,我们通常创建一个SQLiteOpenHelper的子类,如DatabaseHelper,来处理数据库的创建和版本管理。onCreate()方法用于首次创建数据库时执行的SQL语句,onUpgrade()方法则在数据库升级时调用。

public class DatabaseHelper extends SQLiteOpenHelper {

//数据库版本号

private static final int DATABASE_VERSION = 1;

//数据库名称

private static final String DATABASE_NAME = "gg.db";

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

//创建图片表的SQL语句

String CREATE_IMAGE_TABLE = "CREATE TABLE " + "Images" + "(" + "id INTEGER PRIMARY KEY," + "name TEXT," + "path TEXT" + ")";

db.execSQL(CREATE_IMAGE_TABLE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

//升级数据库时的操作,比如删除旧表再创建新表

db.execSQL("DROP TABLE IF EXISTS Images");

onCreate(db);

}

}

接下来,我们需要实现图片的插入、查询和删除操作。例如,可以创建一个ImageModel类来表示图片数据,然后在DatabaseHelper中提供对应的方法:

public class ImageModel {

private int id;

private String name;

private String path;

//构造函数、getters和setters...

}

public class DatabaseHelper {

//插入图片

public long insertImage(ImageModel image) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("name", image.getName());

contentValues.put("path", image.getPath());

return db.insert("Images", null, contentValues);

}

//查询所有图片

public List getAllImages() {

List<;ImageModel>; imageList = new ArrayList<;>;();

Cursor cursor = db.query("Images", null);

if (cursor.moveToFirst()) {

  do {

    ImageModel image = new ImageModel();

    image.setId(cursor.getInt(cursor.getColumnIndex("id")));

    image.setName(cursor.getString(cursor.getColumnIndex("name")));

    image.setPath(cursor.getString(cursor.getColumnIndex("path")));

    imageList.add(image);

  } while (cursor.moveToNext());

}

return imageList;

}

//删除图片

public void deleteImage(int id) {

SQLiteDatabase db = this.getWritableDatabase();

db.delete("Images", "id=?", new String[]{String.valueOf(id)});

}

}

现在,我们有了数据库操作的基础,接下来就是如何在Grid中显示这些图片。在Android中,我们可以使用GridView控件配合BaseAdapter来实现。创建一个GridViewAdapter,继承自BaseAdapter:

public class GridViewAdapter extends BaseAdapter {

private Context context;

private List imageList;

public GridViewAdapter(Context context, List imageList) {

this.context = context;

this.imageList = imageList;

}

//实现BaseAdapter的方法,如getItemCount(), getItem(), getView()...

}

在getView()方法中,我们将为每个ImageView加载图片,可以使用Glide或Picasso等库来实现图片的异步加载:

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder;

if (convertView == null) {

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = inflater.inflate(R.layout.grid_item, parent, false);

viewHolder = new ViewHolder();

viewHolder.imageView = convertView.findViewById(R.id.image_view);

convertView.setTag(viewHolder);

} else {

viewHolder = (ViewHolder) convertView.getTag();

}

Glide.with(context)

.load(imageList.get(position).getPath())

.into(viewHolder.imageView);

return convertView;

}

static class ViewHolder {

ImageView imageView;

}

在主Activity中设置GridView的数据源和适配器:

public class MainActivity extends AppCompatActivity {

private GridView gridView;

private GridViewAdapter adapter;

private DatabaseHelper dbHelper;

private List imageList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

gridView = findViewById(R.id.gridView);

dbHelper = new DatabaseHelper(this);

imageList = dbHelper.getAllImages();

adapter = new GridViewAdapter(this, imageList);

gridView.setAdapter(adapter);

}

}

以上就是如何在Android中操作SQLite数据库并以Grid形式显示图片的基本步骤。在实际项目中,你可能需要根据具体需求进行更多的定制,比如添加图片的上传、删除功能,或者优化图片加载性能等。记住,始终确保在用户交互过程中处理好线程安全问题,避免在主线程中执行耗时操作。在使用任何外部资源(如压缩包中的数据库)时,一定要确保其安全性和合法性,遵循最佳实践。

相关链接:

  1. 用gridview展示相册图片

  2. Android开发之使用GridView展示图片的方法

  3. android创建数据库SQLite保存图片示例

  4. SQLite数据库储存图片信息GridView显示的小DEMO

  5. Android图片展示

图片展示:

用户评论
请输入评论内容
评分:
暂无评论