Android ContentProvider(内容提供器运用一)

来源:互联网 发布:linux终端帮助命令 编辑:程序博客网 时间:2024/05/01 19:08

-----Manifest设置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
    package="gongzibai.co.cc"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
 //加入provider
        <provider
            android:authorities="testprovider"
            android:name="TextProvider" >
        </provider>

        <activity
            android:label="@string/app_name"
            android:name=".P1Activity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category

android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


-----------------DtaabaseHelper.java
package gongzibai.co.cc;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

public class DtaabaseHelper extends
  SQLiteOpenHelper {

 //建立数据库
 public DtaabaseHelper(
   Context context) {
  super(context, "test.db", null,
    1);
  // TODO Auto-generated constructor stub
 }
 
 //创建表test 列表数字、名字、描述
 @Override
 public void onCreate(
   SQLiteDatabase db) {
  // TODO Auto-generated method stub
  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);

 }

}

------------TextProvider.java
package gongzibai.co.cc;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;

public class TextProvider extends
  ContentProvider {
 //定义类
 DtaabaseHelper dtaabaseHelper;

 @Override
 public int delete(Uri arg0,
   String arg1, String[] arg2) {
  // TODO Auto-generated method stub
  return 0;
 }

 @Override
 public String getType(Uri uri) {
  // TODO Auto-generated method stub
  return null;
 }

 //插数据可以写入,插入表test
 @Override
 public Uri insert(Uri uri,
   ContentValues values) {
  // TODO Auto-generated method stub
  SQLiteDatabase db = dtaabaseHelper
    .getWritableDatabase();
  db.insert("test", null, values);
  return null;
 }
 
 //实例化类

 @Override
 public boolean onCreate() {
  // TODO Auto-generated method stub
  dtaabaseHelper = new DtaabaseHelper(
    getContext());
  return true;
 }

 //检索 数据可以读取,数据检索简历设置表test
 @Override
 public Cursor query(Uri uri,
   String[] projection,
   String selection,
   String[] selectionArgs,
   String sortOrder) {
  // TODO Auto-generated method stub
  SQLiteDatabase db = dtaabaseHelper
    .getReadableDatabase();
  SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
  qb.setTables("test");
  Cursor cursor = qb.query(db,
    projection, selection,
    selectionArgs, null,
    null, null);

  return cursor;
 }

 @Override
 public int update(Uri uri,
   ContentValues values,
   String selection,
   String[] selectionArgs) {
  // TODO Auto-generated method stub
  return 0;
 }

}

 

---------------P1Activity.java
package gongzibai.co.cc;

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;

public class P1Activity extends
  Activity {
 // ProvideTest主程序
 /** Called when the activity is first created. */
 @Override
 public void onCreate(
   Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 取得Content Provider的Uri
  getIntent()
    .setData(
      Uri.parse

("content://gongzibai.co.cc.testprovider"));
  Uri uri_test = getIntent()
    .getData();
  // 建立二行测试用的数据
  ContentValues values = new ContentValues();
  values.put("name", "Macoto");
  values.put("description",
    "0932-158983");
  getContentResolver().insert(
    uri_test, values);
  values.put("name", "Ming");
  values.put("description",
    "0932-123456");
  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);
 }
}

 

原创粉丝点击