一、目的及效果
数据库是应用程序经常用到的工具,某些手机app,使用中也会涉及到数据的存储展示操作,今天学习研究了下,使用文本编辑框可以输入信息,使用列表展示数据,在页面长按数据可以删除数据,具体效果如下图所示。
二、实现过程
1、创建一个扩展自SQLiteOpenHelper的类用于存放数据
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by Kely on 2015/6/17. */ public class Db extends SQLiteOpenHelper { private static final int DB_VERSION = 1; public Db(Context context){ super(context,"CustomerDb",null,DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE user(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "name TEXT DEFAULT \"\","+ "sex TEXT DEFAULT \"\")"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
2、在MainActivity的create函数中实现数据的添加删除操作
1)使用ListView展示数据
2)使用EditText添加数据
3)对ListView展示的数据长按实现删除操作
import android.app.AlertDialog; import android.app.ListActivity; import android.content.ContentValues; import android.content.DialogInterface; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class MainActivity extends ListActivity { public Db db; private SimpleCursorAdapter adapter; private EditText etName,etSex; private Button btnAdd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); db = new Db(this); etName = (EditText) findViewById(R.id.etName); etSex = (EditText) findViewById(R.id.etSex); btnAdd = (Button) findViewById(R.id.btnAdd); //注册监听器,在应用上向数据库输入信息 btnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ContentValues cv = new ContentValues(); cv.put("name", etName.getText().toString()); cv.put("sex", etSex.getText().toString()); SQLiteDatabase dbWrite = db.getWritableDatabase(); dbWrite.insert("user", null, cv); refreshLishView(); dbWrite.close(); Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show(); } }); //注册监听器,在应用上删除数据 getListView().setOnItemLongClickListener(listViewItemLongClickListener); //dbWrite(); dbList(); } //声明删除数据监听器变量 private AdapterView.OnItemLongClickListener listViewItemLongClickListener = new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { new AlertDialog.Builder(MainActivity.this).setTitle("删除").setMessage("确认删除该数据?") .setNegativeButton("取消", null).setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Cursor c = adapter.getCursor(); c.moveToPosition(position); SQLiteDatabase dbWrite = db.getWritableDatabase(); int itemId = c.getInt(c.getColumnIndex("_id")); dbWrite.delete("user", "_id=?", new String[]{itemId + ""}); refreshLishView(); dbWrite.close(); } }).show(); return true; } }; //用于刷新ListView显示信息 private void refreshLishView(){ SQLiteDatabase dbRead = db.getReadableDatabase(); Cursor c = dbRead.query("user",null,null,null,null,null,null); adapter.changeCursor(c); dbRead.close(); } //使用ListView显示数据库数据 public void dbList(){ SQLiteDatabase dbRead = db.getReadableDatabase(); Cursor c = dbRead.query("user",null,null,null,null,null,null); adapter = new SimpleCursorAdapter(this,R.layout.user_list_cell,c,new String[]{"_id","name","sex"},new int[]{R.id.tvid, R.id.tvName,R.id.tvSex}); setListAdapter(adapter); dbRead.close(); } //用于调试,从数据库读取数据 public void dbRead(){ SQLiteDatabase dbRead = db.getReadableDatabase(); Cursor c = dbRead.query("user",null,null,null,null,null,null); while (c.moveToNext()){ String name = c.getString(c.getColumnIndex("name")); String sex = c.getString(c.getColumnIndex("sex")); System.out.println(String.format("name=%s,sex=%s",name,sex)); } dbRead.close(); } //用于调试,向数据库写入数据 public void dbWrite(){ SQLiteDatabase dbWrite = db.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("name","张震"); cv.put("sex","男"); dbWrite.insert("user", null, cv); cv.put("name", "李冰"); cv.put("sex","女"); dbWrite.insert("user", null, cv); dbWrite.close(); } }
3、MainActivity布局文件内容如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="姓名:" android:id="@+id/textName" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/etName" android:layout_weight="1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="性别:" android:id="@+id/textSex" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/etSex" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnAdd" android:text="添加"/> </LinearLayout> </LinearLayout>
4、列表布局文件内容如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="ID" android:id="@+id/tvid" android:layout_gravity="center_horizontal" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Name" android:id="@+id/tvName" android:layout_gravity="center_horizontal" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Sex" android:id="@+id/tvSex" android:layout_gravity="center_horizontal" /> </LinearLayout>
三、小结
此例是我学习所做,写出来供有需要的朋友参考。本人最近刚学Android,不足之处,欢迎批评指正。这也是我第一次在csdn上发文章,大家多多支持。