SQLite和listview
2016-06-03 21:47
330 查看
首先创建一个类Sqlite继承自SQLiteOpenHelper,复写onCreate方法,在方法体中创建数据库的表格:
public class Sqlite extends SQLiteOpenHelper {
public Sqlite(Context context) {
super(context, "db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(_id integer primary key autoincrement,name text,sex text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
主布局中最上面定义一个listview,下面定义两个textview和两个editview:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"/>
<EditText
android:id="@+id/etName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sex"/>
<EditText
android:id="@+id/etSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="确定"/>
</LinearLayout>
</LinearLayout>
接着,再新建一个布局文件,名为ueser_list_cell.xml:
<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/tvName" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/tvSex" />
</LinearLayout>
注意:activity是继承自ListActivity,所以主布局有且仅能有一个listview,并且id的定义必须为
android:id="android:id/list"
public class MainActivity extends ListActivity {
private SimpleCursorAdapter simpleCursorAdapter;
private EditText etName,etSex;
private Sqlite db;
private SQLiteDatabase dbRead,dbWrite;
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = (EditText)findViewById(R.id.etName);
etSex = (EditText)findViewById(R.id.etSex);
list = (ListView) findViewById(android.R.id.list);
// 继承自ListActivity,listview的id必须是android:id/list,所以这里找的id是android.R.id.list,
// 即系统的id
findViewById(R.id.button).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());
dbWrite.insert("user",null,cv);
// 以上代码是把用户输入的名字和性别存储到数据库
refreshListView();
}
});
db = new Sqlite(this);
dbRead = db.getReadableDatabase();
dbWrite = db.getWritableDatabase();
simpleCursorAdapter = new SimpleCursorAdapter(this,R.layout.user_list_cell,null,new String[]{"name","sex"},new int[]{R.id.tvName,R.id.tvSex},0);
list.setAdapter(simpleCursorAdapter);
refreshListView();
getListView().setOnItemLongClickListener(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 = simpleCursorAdapter.getCursor();
c.moveToPosition(position);
int itemId = c.getInt(c.getColumnIndex("_id"));
dbWrite.delete("user","_id=?",new String[]{itemId+""});
refreshListView();
}
}).create().show();
return true;
}
});
}
public void refreshListView(){
Cursor c = dbRead.query("user",null,null,null,null,null,null);
simpleCursorAdapter.changeCursor(c);
}
}
public class Sqlite extends SQLiteOpenHelper {
public Sqlite(Context context) {
super(context, "db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(_id integer primary key autoincrement,name text,sex text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
主布局中最上面定义一个listview,下面定义两个textview和两个editview:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"/>
<EditText
android:id="@+id/etName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="sex"/>
<EditText
android:id="@+id/etSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="确定"/>
</LinearLayout>
</LinearLayout>
接着,再新建一个布局文件,名为ueser_list_cell.xml:
<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/tvName" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/tvSex" />
</LinearLayout>
注意:activity是继承自ListActivity,所以主布局有且仅能有一个listview,并且id的定义必须为
android:id="android:id/list"
public class MainActivity extends ListActivity {
private SimpleCursorAdapter simpleCursorAdapter;
private EditText etName,etSex;
private Sqlite db;
private SQLiteDatabase dbRead,dbWrite;
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = (EditText)findViewById(R.id.etName);
etSex = (EditText)findViewById(R.id.etSex);
list = (ListView) findViewById(android.R.id.list);
// 继承自ListActivity,listview的id必须是android:id/list,所以这里找的id是android.R.id.list,
// 即系统的id
findViewById(R.id.button).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());
dbWrite.insert("user",null,cv);
// 以上代码是把用户输入的名字和性别存储到数据库
refreshListView();
}
});
db = new Sqlite(this);
dbRead = db.getReadableDatabase();
dbWrite = db.getWritableDatabase();
simpleCursorAdapter = new SimpleCursorAdapter(this,R.layout.user_list_cell,null,new String[]{"name","sex"},new int[]{R.id.tvName,R.id.tvSex},0);
list.setAdapter(simpleCursorAdapter);
refreshListView();
getListView().setOnItemLongClickListener(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 = simpleCursorAdapter.getCursor();
c.moveToPosition(position);
int itemId = c.getInt(c.getColumnIndex("_id"));
dbWrite.delete("user","_id=?",new String[]{itemId+""});
refreshListView();
}
}).create().show();
return true;
}
});
}
public void refreshListView(){
Cursor c = dbRead.query("user",null,null,null,null,null,null);
simpleCursorAdapter.changeCursor(c);
}
}
相关文章推荐
- ORACLE操作
- simple-spring-memcached缓存搭建
- mysql主从复制配置(精简版)
- SQLite使用小记2015.06.03(长期更新中)
- mysql主从复制原理
- MongoDB for Java Programmer ——1
- TimesTen 数据库复制学习:4. 定义Active Standby Pair复制策略
- mysql zip 免安装版 安装教程
- windows远程连接mysql 以及10060错误
- sql server 2008空间释放
- Sql Server 检测死锁的SQL语句
- JDBC以SQL Server身份验证方式连接SQL Server2014
- 2、.getcom.mchange.v2.c3p0.impl.NewProxyConnection cannot becast to com.mysql.jdbc.Connection
- mysql 入门基础(4)—约束和视图
- SQL 查找一个字段的首字母是以A~Z为首的数据
- ubuntu下安装redis拓展、windows下安装redis拓展
- redis服务启动和停止
- 对于数据库范式的一点理解
- redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
- redis在linux下使用客户端