继续上一个例子,结合ListView中对SQLite进行操作。
通过CursorAdapter在ListView中的数据呈现
在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出。在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理:
public class Chapter22Test1 extends ListActivity{
private SQLiteDatabase db = null;
private Cursor cursor = null;
private SimpleCursorAdapter adapter = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db= (new Chapter22Db (getApplicationContext())).getWritableDatabase();
cursor =db.rawQuery("SELECT _id,Name,Weight from mytable ORDER BY Weight", null);
//layout/chapter_22_test1.xml的Android XML文件定义了ListView中每个单元的排列方式,每个单元R.id.c22_name和R.id.c22_gravity都是TextView,分列左右
adapter = new SimpleCursorAdapter(this,
R.layout.chapter_22_test1,
cursor,
new String[]{"Name","Weight"},//游标数据的名称,实际是Table列名字
new int[]{
R.id.c22_name, R.id.c22_gravity});//对应的UI微件的id
setListAdapter(adapter);
}
protected void onDestroy() {
super.onDestroy();
cursor.close(); //我们在onCreate()中没有关闭游标,因为需要和ListView进行数据关联,关闭curosr,会导致List无数据,故在最后释放资源
db.close(); //断开和数据库的连接,释放相关资源
}
}