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
- Android开发之通过CursorAdapter读取数据(源代码分享)
- Android开发之通过接口回调机制加载数据(源代码分享)
- Android开发之sdcard读写数据(源代码分享)
- Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
- Android开发之Fragment与Activity的数据交互通过回调机制实现(源代码分享)
- Android开发之ContentProvider结合LoaderManager加载数据(图文源代码分享)
- Android开发之Service与Activity数据交互(源代码分享)
- Android开发之WebView的开发使用(源代码分享)
- Android开发之android_apk 在线安装(源代码分享)
- Android开发之自定义Notification(源代码分享)
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之AIDL实现原理解析(源代码分享 )
- Android开发之Handler的使用方法(源代码分享)
- Android进阶之读取手机联系人显示listview并点击拨号(CursorAdapter)
- Android之CursorAdapter用法
- Android之CursorAdapter示例
- POST 与 GET 区别
- VS2012加载项目失败解决办法
- he comes
- Android学习之EditText
- Struts2返回JSON数据的原理及具体应用
- Android开发之通过CursorAdapter读取数据(源代码分享)
- 004_008 Python 行转化成列,列转化成行
- Android学习之button
- java socket编程
- 《行尸走肉》观后感
- 投影纹理映射(Projective Texture Mapping)详解
- void main 与 int main的区别
- HDMI blend alpha 配置
- Helpful Maths