listview动态添加数据,使用sqlite对本地数据库增删改查

对数据库使用不太熟悉,记录一下,方便自己查看

package com.simon.listdemo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends Activity {
   

    private Context mContext = this;
    private ImageView addView;
    private ListView listView;

    private MyAdapter adapter;

    private List<DataBean> mList;

    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 0:
                    new MyTask().execute();
                    break;
            }
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DBManager.getInstance(mContext).createDatebase(mContext);

        addView = (ImageView) this.findViewById(R.id.main_add);
        listView = (ListView) this.findViewById(R.id.main_list);
        mList = new ArrayList<DataBean>();
        mHandler.sendMessage(Message.obtain(mHandler, 0));


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                builder.setCancelable(false);
                AlertDialog dialog = null;
                builder.setTitle("提示");
                builder.setMessage("确定要删除吗");

                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        boolean isOK = DBManager.getInstance(mContext).delete_download(mList.get(position).getName());
                        if (isOK) {
                            Toast.makeText(mContext, "删除成功", Toast.LENGTH_LONG).show();
                            mHandler.sendMessage(Message.obtain(mHandler, 0));
                        } else {
                            Toast.makeText(mContext, "删除失败了", Toast.LENGTH_LONG).show();
                        }
                        dialog.dismiss();
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });

                dialog = builder.create();
                dialog.show();
         
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 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 的布局。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值