Android开发之通过CursorAdapter读取数据(源代码分享)
依照惯例我们先来看下谷歌官方文档对游标适配器的介绍,该适配器可以将数据库的数据暴露给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 stubContentValues 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();}}
}
Android开发之通过CursorAdapter读取数据(源代码分享)相关推荐
- android 从文件制定位置读取数据
今天,简单讲讲android 如何从制定的位置读取文件. 之前,我写了使用FileInputStream使用read(byte[] b)读取文件的博客,每次调用read()时,FileInputStr ...
- python读文件和写文件-python开发--从文件中读取数据和写入文件
#! /usr/bin/env python -*- coding:utf-8 -*- """ @Author:gcan @Email:1528667112@qq.com ...
- Android中,Sqlite数据库读取数据为空的问题
公司使用的触摸屏出现了一个奇怪的问题,在app中读取数据,只是简单的select * from table 也查询不到数据. [问题描述] 后来发现是有两个module单例分别连接数据库,一个modu ...
- Android开发人员不得不收集的代码,分享一点面试小经验
一.背景介绍 从实用角度梳理一篇能够帮大家快速扫盲的CMake基础教程,也是对我目前负责项目的一次学习总结.既然选择从项目实用性考虑,下面的讲解内容可能并不一定完整,更多的是符合项目目前使用到的一些特 ...
- android 开发书签大全,一站式的导航分享!
#一.描述 此资源是转载而来,只为需要而用. #二.书签大全 ###Android大神 android-dev-cn Trinea 郭神 任玉刚 鸿洋 夏安明 徐医生 daimajia stormzh ...
- Android开发应该了解的Binder原理,分享PDF高清版
正文 Android行业主要问题是初级Android太多了,会写xml和Activity的程序员太多了,初中级程序员面临很大的竞争,现状也就偏于高级开发者.越来越多的初中级Android程序员找不到满 ...
- Android开发7:简单的数据存储(使用SharedPreferences)和文件操作
前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...
- Android 开发中使用Intent传递数据的方法
Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short ...
- android 包裹内容,Android开发中Bundle用法 包裹数据
SDK里是这样描述:A mapping from String values to various Parcelable types. 它帮助我将数据打包传入intent里面,为使用这些数据提供了便利 ...
最新文章
- 协同工作流引擎,开启流程优化新纪元
- Win7远程桌面不能连接的解决方案
- 【今日CS 视觉论文速览】Thu, 14 Feb 2019
- Netty(二)(入门篇)传统的Bio编程
- Retrofit使用
- linux卸载时提示未安装,Ubuntu 安装卸载软件命令,及出现没有可用软件包提示时的处理办法...
- 算法复习周------“贪心问题之‘单源最短路径’”
- 夜间灯光数据下载(DMSP/OLS,NPP/VIIRS、珞珈一号网址)
- python获取网易云的歌词和时间戳
- python输出姓名_Python简单生成随机姓名的方法示例
- 在线计算机响声,怎么在线录制电脑内部声音
- 深圳移动 神州行(大众卡/轻松卡/幸福卡)套餐资费(含香港日套餐)信息及使用方法
- .NET 6 中的 Http Logging 中间件
- 你遇到过哪些质量很高的 Java 面试?
- 接近开关常开开关和常闭长闭的区别?
- 阿里云国际站实名认证上传材料填写样例(域名持有者为组织)
- 学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求
- beeline连接hive的两种方式
- vue实战-实现换主题/皮肤功能
- vue+element实现滚动公告栏效果