安卓初級教程(3):ContentProvider的運用原理
package com.example.android.provider; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter; //這是第一個先看的java檔,testprovider.java是繼承這個java檔的。 public class ProviderTest extends Activity {
//ProvideTest
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Content Provider和Uri。我們要學習的重中之重就在以下這兩行。
//在這裡getIntent()是意圖從另外一個java檔中獲取數據。如何從另一個java檔中抓取數據,就是借助Uri.parse。
//Uri uri_test是定義項,為了之後在Cusor cur之中抓取數據。
getIntent().setData(Uri.parse("content://com.example.android.provider.testprovider"));
Uri uri_test = getIntent().getData(); //精妙之處就在於這個values和另一個java檔之中的values是處於何種關係?手
ContentValues values = new ContentValues();
values.put("name", "陳翹鈞");
values.put("description", "68206021");
getContentResolver().insert(uri_test, values);
values.put("name", "馮幹傑");
values.put("description", "60746017");
getContentResolver().insert(uri_test, values);
//Content Provider
Cursor cur = managedQuery(uri_test, null, null, null, null);
cur.moveToFirst();
//ArrayList
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> item;
//ArrayList data
for (int i = 0; i < cur.getCount(); i++) {
item = new HashMap<String, Object>();
item.put("column00", cur.getString(0));
item.put("column01", cur.getString(1));
item.put("column02", cur.getString(2));
data.add(item);
cur.moveToNext();
}
cur.close();
//ArrayList data,mListView01
ListView mListView01 = new ListView(this);
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.main, new String[] {"column00", "column01", "column02" }, new int[] {
R.id.TextView01, R.id.TextView02, R.id.TextView03 });
mListView01.setAdapter(adapter);
setContentView(mListView01);
}
}
package com.example.android.provider; import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.provider.BaseColumns; public class TestProvider extends ContentProvider { private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) {
super(context, "test.db", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE test (" + BaseColumns._ID
+ " INTEGER PRIMARY KEY," + "name TEXT,"
+ "description TEXT" + ");");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS test");
onCreate(db);
}
}
//DatabaseHelper,databaseHelper
DatabaseHelper databaseHelper;
//Content Providers,onCreate()
@Override
public boolean onCreate() {
databaseHelper = new DatabaseHelper(getContext());
return true;
}
//Content Providers,insert()
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.insert("test", null, values);
return null;
}
//Content Providers,query()
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables("test");
Cursor c = qb.query(db, projection, selection, selectionArgs, null,
null, null);
return c;
}
//Content Providers,delete()
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
//Content Providers,getType()
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
//Content Providers,update()
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
}
安卓初級教程(3):ContentProvider的運用原理的更多相关文章
- 安卓初級教程(5):TabHost的思考
package com.myhost; import android.os.Bundle; import android.view.LayoutInflater; import android.wid ...
- 安卓初級教程(4):sqlite建立資料庫
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...
- 安卓初級教程(2):SD創建file,儲存與讀寫的方法(1)
package com.sdmadik; import java.io.*; import android.app.Activity; import android.os.Bundle; import ...
- 安卓初級教程(1):@Database(1)
package com.example.android.db01; import android.app.Activity; import android.content.ContentValues; ...
- 安卓中級教程(3):ScrollView
以上是scrollview的圖例,可見srollview是一種滑動功能的控件,亦是非常常見的控件. 一般寫法如下: package com.mycompany.viewscroller; import ...
- 安卓中級教程(11):深入研究餓了麼的各個java檔運作關係(1)
package com.example.ele_me.activity; import android.annotation.SuppressLint; import android.app.Acti ...
- 安卓中級教程(1):@InjectView
package com.mycompany.hungry; import android.annotation.SuppressLint; import android.app.Activity; i ...
- 安卓中級教程(6):annotation的基本用法
package com.example.ele_me.activity; import android.annotation.SuppressLint; import android.app.Acti ...
- 安卓中級教程(2):@InjectView中的對象inject
package com.example.ele_me.util; import java.lang.annotation.Annotation; import java.lang.reflect.Fi ...
随机推荐
- Lintcode 372. O(1)时间复杂度删除链表节点
----------------------------------- AC代码: /** * Definition for ListNode. * public class ListNode { * ...
- NOPI读取模板导出(Excel中追加数据)
在Controller里,我们定义一个FileResult的Action,返回值是一个文件形式被浏览器下载下来. [HttpGet] public FileResult ExportProductLi ...
- Swagger(webapi自动生成接口说明文档)
1.引入Swagger.Net.UI和Swashbuckle包 2.卸载重复包Swagger.Net 3.多余的SwaggerUI文件夹 4.项目属性->勾选生成xml文档文件 5.添加类Swa ...
- 修改MS SQL忽略大小写 分类: SQL Server 数据库 2015-06-19 09:18 34人阅读 评论(0) 收藏
第一步:数据库->属性->选项->限制访问:SINGLE_USER 第二步:ALTER DATABASE [数据库名称] collate Chinese_PRC_CI_AI 第三步: ...
- Dapper完美兼容Oracle,执行存储过程,并返回结果集。
Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...
- poj上的dp专题
更新中... http://poj.org/problem?id=1037 dp[i][j][0]表示序列长度为i,以j开始并且前两位下降的合法序列数目; dp[i][j][1]表示序列长度为i, 以 ...
- SQL Server 2012 新特性
--Concat示例 ,null,'RTM') --Format实例 DECLARE @d DATETIME = GETDATE(); SELECT FORMAT( @d, 'd', 'en-US' ...
- Maven仓库 国内镜像
<repositories> <repository> <id>repo-mirror</id> <url>http://maven.net ...
- 国外程序员整理的Java资源大全分享
Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...
- Linux查看系统运行情况
http://elinux.org/Runtime_Memory_Measurement