Android开发之通过CursorAdapter读取数据(源代码分享)

来源:互联网 发布:手机淘宝哪里看好评率 编辑:程序博客网 时间:2024/05/21 10:23

   依照惯例我们先来看下谷歌官方文档对游标适配器的介绍,该适配器可以将数据库的数据暴露给ListView,将数据显示在LIstView空间上。特别注意的一点是,官方文档上写道游标必须包含一个列命名为“_id”,否则这个类将不会工作。此外,使用与这个类MergeCursor不会工作如果合并后的游标有重叠的的“_id”列中的值。 通过对官网文档的解读,我们就可以知道通过游标适配器访问数据库库的表单的数据,一定要创建一列名为"_id",否则就会报错。现在lets,go!

MainAcitivity的代码

package com.example.f13_cursor02;import com.example.f13_cursor.dao.DBManager;import android.os.Bundle;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.support.v4.widget.SimpleCursorAdapter;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.ListView;public class MainActivity extends Activity {private Button button;private ListView listView;private SimpleCursorAdapter adapter;//生命一个游标适配器private DBManager dbManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbManager = new DBManager(this);listView = (ListView) this.findViewById(R.id.listView1);button = (Button) this.findViewById(R.id.button1);Cursor cursor = dbManager.query("person", null, null, null, null, null,null, null);adapter = new SimpleCursorAdapter(this, R.layout.item, cursor,new String[] { "name", "address" }, new int[] { R.id.textView1,R.id.textView2 });listView.setAdapter(adapter);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub              ContentValues contentValues=new ContentValues();              contentValues.put("name", "jack");              contentValues.put("address", "hangzhou");              dbManager.insert("person", null, contentValues);}});adapter.notifyDataSetChanged();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

MyOpenHelper类的代码,该类继承SQLiteOpenHelper,用于创建数据库。

package com.example.f13_cursor.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyOpenHelper extends SQLiteOpenHelper {private static final int DATABASE_VERSION = 1;private static final String PERSON_TABLE_NAME = "person";public MyOpenHelper(Context context) {super(context, PERSON_TABLE_NAME, null, DATABASE_VERSION);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL("create table "+ PERSON_TABLE_NAME+ "(_id integer primary key autoincrement,name varchar(64),address varchar(64))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}
DBManager类,用于对数据库进行增删改查

package com.example.f13_cursor.dao;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class DBManager {private MyOpenHelper helper;private SQLiteDatabase database;public DBManager(Context context) {// TODO Auto-generated constructor stubhelper = new MyOpenHelper(context);database = helper.getWritableDatabase();}public boolean insert(String table, String nullColumnHack,ContentValues values) {boolean flag = false;long count = database.insert(table, nullColumnHack, values);flag = count > 0 ? true : false;return flag;}public Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy, String limit) {Cursor cursor = null;cursor = database.query(table, columns, selection, selectionArgs,groupBy, having, orderBy);return cursor;}public void conn() {if (database != null) {database.close();}}}


4 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 注册消防工程师报名 二级消防工程师考试科目 消防工程师报考条件二级 二级注册消防工程师报考条件 一级注册消防工程师论坛 二级消防工程师好考吗 一级注册消防工程师招聘 注册消防工程师难考吗 考一级消防工程师有用吗 消防工程师难度 一消防工程师 一级消防工程师考试难度 一级消防工程师好考吗 消防工程师待遇 注册消防工程师一级二级区别 一级注册消防工程师好考吗 注册消防工程师好不好考 一级消防工程师难度 二级注册消防工程师考试科目 二级消防考试时间 一级消防工程师招聘 陕西二级消防工程师报名时间 2017消防工程师考试时间 消防工程师代报名 消防技术综合能力 一级注册消防工程师报考条件 河北二级消防工程师报名时间 二级消防工程师报名条件 消防员考试报考条件 消防技术实务 一级注册消防工程师报名时间 消防安全工程师考试时间 消防注册工程师报考条件 2017一级消防工程师报名时间 二级消防考试科目 辽宁消防工程师报名时间 一级消防工程师免考条件 注册消防工程师考哪几门 注册消防工程师考试题型 湖南消防工程师报名时间 注册消防工程师免考条件