2.高焕堂讲解ContentProvider范例.doc

上传人:桔**** 文档编号:561827828 上传时间:2023-11-12 格式:DOC 页数:6 大小:68.51KB
返回 下载 相关 举报
2.高焕堂讲解ContentProvider范例.doc_第1页
第1页 / 共6页
2.高焕堂讲解ContentProvider范例.doc_第2页
第2页 / 共6页
2.高焕堂讲解ContentProvider范例.doc_第3页
第3页 / 共6页
2.高焕堂讲解ContentProvider范例.doc_第4页
第4页 / 共6页
2.高焕堂讲解ContentProvider范例.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《2.高焕堂讲解ContentProvider范例.doc》由会员分享,可在线阅读,更多相关《2.高焕堂讲解ContentProvider范例.doc(6页珍藏版)》请在金锄头文库上搜索。

1、2.高焕堂讲解 ContentProvider范例1. 何谓Android的嫡系组件 Android有4项一等公民(或称为嫡系亲属),包括:Activity、ContentProvider、IntentReceiver与Service。它们都必须宣告于AndroidManifest.xml档案里,如下: 这让Android知道我们城市里定义了多少个嫡系组件类别;Android可以在启动时就将它们执行起来,成为共享的(Shared)服务组件。这些嫡系服务组件间的沟通,通常是透过意图(Intent)对象来请Android转达给对方,Android则会依据意图而找出最佳的配对。配对成功,就展开相互的

2、沟通与服务了。2. 什么是ContentProvider嫡系组件- 以SQLite为例 在Android里,SQLite数据库是最典型的ContentProvider,负责储存各式各样的内容。除了数据库之外,还有许多其它种类的ContentProvider。在这里并不是要介绍这些ContentProvider,而是要透过SQLite认识ContentProvider接口,然后将舶来Linter组件,配上这种ContentProvider接口,让它摇身一变成为Android的嫡系组件。2.1 一般(即非嫡系)SQLite的范例 没有透过ContentProvider接口来使用SQLite,就是对

3、SQLite的非嫡系用法。此时,应用程序透过JDBC接口和SQL语句来与SQLite沟通,以存取数据库里的内容。先认识这种传统用法。此范例将从SQLite读取数据。首先建立一个程序项目,其含有两个Java程序文件:ac01.java和DataProvider.java。其中,ac01.java 是典型的Activity类别,负责UI画面的显示工作,而DataProvider则负责与SQLite沟通。其详细程序代码为:/* - ac01.java 程序代码 -*/package com.misoo.pklx;import java.util.ArrayList;import java.util.

4、HashMap;import java.util.Map;import android.app.ListActivity;import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;public class ac01 extends ListActivity private static final String PROJECTION = new String

5、stud_no, stud_name ; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); DataProvider dp = new DataProvider(this); Cursor cur = dp.query(PROJECTION, null, null, null); ArrayListMap coll = new ArrayListMap(); Map item; cur.moveToFirst(); while(!cur.isAfterL

6、ast() item = new HashMap(); item.put(c1, cur.getString(0) + , + cur.getString(1); coll.add(item); cur.moveToNext(); dp.close(); this.setListAdapter(new SimpleAdapter(this, coll, android.R.layout.simple_list_item_1, new String c1 , new int android.R.id.text1); Override protected void onListItemClick(

7、ListView l, View v, int position, long id) finish(); 指令: DataProvider dp = new DataProvider(this); 这和一般类别之用法是一样的。ac01对象指名要诞生一个DataProvider的物件。然后呼叫它,如下指令: Cursor cur = dp.query(PROJECTION, null, null, null);这要求SQLite从数据库查询出某些数据。详细的DataProvider.java程序代码如下:/* - DataProvider.java 程序代码 -*/package com.mis

8、oo.pklx;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.util.Log;public class DataProvider private static final String DATABASE_NAME = StudDB; private static final String TABLE_NAME = Stud

9、ent; private final int DB_MODE = Context.MODE_PRIVATE; private SQLiteDatabase db=null; public DataProvider(Context ctx) try db = ctx.openOrCreateDatabase(DATABASE_NAME, DB_MODE, null); catch (Exception e) Log.e(ERROR, e.toString(); return; try db.execSQL(drop table + TABLE_NAME); catch (Exception e)

10、 Log.e(ERROR, e.toString(); db.execSQL(CREATE TABLE + TABLE_NAME + ( + stud_no + TEXT, + stud_name + TEXT + );); String sql_1 = insert into + TABLE_NAME + (stud_no, stud_name) values(S101, Lily); String sql_2 = insert into + TABLE_NAME + (stud_no, stud_name) values(S102, Linda); String sql_3 = insert into + TABLE_NAME + (stud_no, stud_name) values(S103, Bruce); try db.execSQL(sql_1); db.execSQL(sql_2); db.execSQL(sql_3); catch (SQLException e) Log.e(ERROR, e.toString(); return; public Cursor query(String projection, String selection, String selectionArgs, String sortOrder) Cursor cur =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号