Android利用数据库对编辑框的增删改查并用list view显示

时间: 2023-06-27 12:04:24 浏览: 68
在 Android 中,使用数据库对编辑框的增删改查并用 ListView 显示的基本步骤如下: 1.创建数据库 可以使用 SQLite 数据库创建数据库。首先,在 Android 项目中创建一个类来处理数据库操作。在该类中,创建 SQLiteOpenHelper 子类,以便在需要时创建和更新数据库。 2.创建数据模型 定义数据模型以存储在数据库中的数据。该模型应该包含表的列名和数据类型。 3.实现增删改查操作 在数据库类中实现增删改查操作。使用 CRUD (Create, Read, Update, Delete) 操作来处理数据。 4.创建 Activity 创建一个包含编辑框和 ListView 的 Activity。在 Activity 中,实例化数据库类并使用它来实现增删改查操作。 5.使用 Adapter 显示数据 创建一个自定义的 Adapter 类,并将数据传递给 ListView。在 Adapter 中,实现 getView() 方法以显示数据。 下面是一个基本的示例代码: ```java // 创建数据库类 public class MyDatabaseHelper extends SQLiteOpenHelper { // 定义表名和列名 private static final String TABLE_NAME = "my_table"; private static final String COLUMN_ID = "_id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_AGE = "age"; // 创建表 private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT, " + COLUMN_AGE + " INTEGER)"; public MyDatabaseHelper(Context context) { super(context, "my_database", null, 1); } @Override public void onCreate(SQLiteDatabase db) { // 创建表 db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库 } // 实现增删改查操作 public void insertData(String name, int age) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); values.put(COLUMN_AGE, age); db.insert(TABLE_NAME, null, values); db.close(); } public void updateData(int id, String name, int age) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); values.put(COLUMN_AGE, age); db.update(TABLE_NAME, values, COLUMN_ID + "=?", new String[]{String.valueOf(id)}); db.close(); } public void deleteData(int id) { SQLiteDatabase db = getWritableDatabase(); db.delete(TABLE_NAME, COLUMN_ID + "=?", new String[]{String.valueOf(id)}); db.close(); } public List<Person> getAllData() { List<Person> list = new ArrayList<>(); SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex(COLUMN_ID)); String name = cursor.getString(cursor.getColumnIndex(COLUMN_NAME)); int age = cursor.getInt(cursor.getColumnIndex(COLUMN_AGE)); list.add(new Person(id, name, age)); } cursor.close(); db.close(); return list; } } // 创建数据模型类 public class Person { private int id; private String name; private int age; public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public String getName() { return name; } public int getAge() { return age; } } // 创建 Activity public class MainActivity extends AppCompatActivity { private EditText mNameEditText; private EditText mAgeEditText; private ListView mListView; private MyDatabaseHelper mDatabaseHelper; private List<Person> mDataList; private MyAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNameEditText = findViewById(R.id.name_edit_text); mAgeEditText = findViewById(R.id.age_edit_text); mListView = findViewById(R.id.list_view); mDatabaseHelper = new MyDatabaseHelper(this); mDataList = mDatabaseHelper.getAllData(); mAdapter = new MyAdapter(this, mDataList); mListView.setAdapter(mAdapter); } public void onAddClick(View view) { String name = mNameEditText.getText().toString(); int age = Integer.parseInt(mAgeEditText.getText().toString()); mDatabaseHelper.insertData(name, age); mDataList.clear(); mDataList.addAll(mDatabaseHelper.getAllData()); mAdapter.notifyDataSetChanged(); } public void onUpdateClick(View view) { int id = mDataList.get(mListView.getCheckedItemPosition()).getId(); String name = mNameEditText.getText().toString(); int age = Integer.parseInt(mAgeEditText.getText().toString()); mDatabaseHelper.updateData(id, name, age); mDataList.clear(); mDataList.addAll(mDatabaseHelper.getAllData()); mAdapter.notifyDataSetChanged(); } public void onDeleteClick(View view) { int id = mDataList.get(mListView.getCheckedItemPosition()).getId(); mDatabaseHelper.deleteData(id); mDataList.clear(); mDataList.addAll(mDatabaseHelper.getAllData()); mAdapter.notifyDataSetChanged(); } } // 创建 Adapter public class MyAdapter extends BaseAdapter { private Context mContext; private List<Person> mDataList; public MyAdapter(Context context, List<Person> dataList) { mContext = context; mDataList = dataList; } @Override public int getCount() { return mDataList.size(); } @Override public Object getItem(int position) { return mDataList.get(position); } @Override public long getItemId(int position) { return mDataList.get(position).getId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; ViewHolder holder; if (view == null) { view = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.nameTextView = view.findViewById(R.id.name_text_view); holder.ageTextView = view.findViewById(R.id.age_text_view); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } Person person = mDataList.get(position); holder.nameTextView.setText(person.getName()); holder.ageTextView.setText(String.valueOf(person.getAge())); return view; } private static class ViewHolder { TextView nameTextView; TextView ageTextView; } } ``` 在示例代码中,我们创建了一个名为 MyDatabaseHelper 的数据库类,其中包含了创建表、增删改查等操作。我们还创建了一个名为 Person 的数据模型类,用于存储数据库中的数据。在 MainActivity 中,我们实例化了 MyDatabaseHelper,并使用它来实现增删改查操作。我们还创建了一个自定义的 Adapter 类 MyAdapter,并将数据传递给 ListView。最后,在 activity_main.xml 中定义了一个包含编辑框和 ListView 的布局。

相关推荐

最新推荐

recommend-type

Java编程通过list接口实现数据的增删改查代码示例

是介绍Java编程基础方面的内容,涉及list接口的操作,通过list接口实现对数据的增删改查的相关代码,具有一定参考价值,需要的朋友可以了解下。
recommend-type

HBase入门:命名空间、建表、增删改查

进入HBase数据库 hbase shell 注意HBase Shell 中的删除键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。 HBase帮助命令: hbase&gt; help 'create' 命名空间 列出所有命名空间 hbase&gt; list_...
recommend-type

Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法

主要介绍了Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法,涉及Android针对SD卡的读取及文件遍历等相关操作技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这