Android使用页面布局操作SQLite数据库

一、目的及效果

数据库是应用程序经常用到的工具,某些手机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上发文章,大家多多支持。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值