1. 首页
  2. 编程语言
  3. Delphi
  4. Android操作sqlite数据库之Grid显示图片

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

上传者: 2024-07-14 14:20:46上传 RAR文件 129.1KB 热度 9次

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

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

Android操作SQLite数据库

android横向GridView显示图片

用户评论