Android利用数据库对编辑框的增删改查并用list view显示
时间: 2023-06-27 17:04:24 浏览: 118
在 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 的布局。
阅读全文