展会信息港展会大全

ContentProvider
来源:互联网   发布日期:2016-01-14 12:13:55   浏览:2179次  

导读:package www.gxw.com.sqlit.provider; import www.gxw.com.sqlit.dataBase.DataBaseHelper; import android.R.integer; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues; import androi...

package www.gxw.com.sqlit.provider;

import www.gxw.com.sqlit.dataBase.DataBaseHelper;

import android.R.integer;

import android.content.ContentProvider;

import android.content.ContentUris;

import android.content.ContentValues;

import android.content.UriMatcher;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.net.Uri;

public class UserContentProivder extends ContentProvider {

private static final String AUTHORITIES = "www.gxw.com.sqlit.provider.usercontentproivder";

private DataBaseHelper dataBaseHelper;

private static UriMatcher uriMatcher;

private static final int USERSCODE = 1;

private static final int USERCODE = 2;

private String USERS_DIR = "vnd.android.cursor.dir/";

private String USERS_ITEM = "vnd.android.cursor.item/";

static {

uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

// www.gxw.com.sqlit.provider.usercontentproivder/user代表用户信息操作

uriMatcher.addURI(AUTHORITIES, "users", USERSCODE);

// www.gxw.com.sqlit.provider.usercontentproivder/user/1代表查询用户信息

uriMatcher.addURI(AUTHORITIES, "users/#", USERCODE);

}

@Override

public boolean onCreate() {

// TODO Auto-generated method stub

this.dataBaseHelper = new DataBaseHelper(getContext(), 1);

return false;

}

@Override

public Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

Cursor c = null;

switch (uriMatcher.match(uri)) {

case USERCODE:

long id =ContentUris.parseId(uri);

c = db.query("users", projection, "userid",

new String[] { "" + id }, null, null, sortOrder);

break;

case USERSCODE:

c = db.query("users", projection, selection, selectionArgs, null,

null, sortOrder);

break;

default:

throw new IllegalArgumentException("Unkonw uri" + uri);

}

return c;

}

@Override

public String getType(Uri uri) {

// TODO Auto-generated method stub

/**

* 操作的条目是多个还是一个

*/

String value = null;

switch (uriMatcher.match(uri)) {

case USERSCODE:

value = USERS_DIR;

break;

case USERCODE:

value = USERS_ITEM;

break;

}

return value;

}

@Override

public Uri insert(Uri uri, ContentValues values) {

// TODO Auto-generated method stub

if (uriMatcher.match(uri) != USERSCODE) {

throw new IllegalArgumentException("Unkonw uri" + uri);

}

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

long rowId = db.insert("users", "username", values);

//db.close();

//注册监听 通知所有注册在uri上的监听者

getContext().getContentResolver().notifyChange(uri, null);

return ContentUris.withAppendedId(uri, rowId);

}

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

// TODO Auto-generated method stub

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

int rows = -1;

switch (uriMatcher.match(uri)) {

case USERCODE:

long id = ContentUris.parseId(uri);

rows = db.delete("users", "userid=?", new String[] { "" + id });

db.close();

break;

case USERSCODE:

rows = db.delete("users", selection, selectionArgs);

break;

default:

throw new IllegalArgumentException("Unkonw uri" + uri);

}

return rows;

}

@Override

public int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

int rows = -1;

switch (uriMatcher.match(uri)) {

case USERCODE:

long id = ContentUris.parseId(uri);

rows = db.update("users", values, "userid=?",

new String[] { "" + id });

db.close();

break;

case USERSCODE:

rows = db.update("users", values, selection, selectionArgs);

break;

default:

throw new IllegalArgumentException("Unkonw uri" + uri);

}

return rows;

}

}

package www.gxw.com.sqlit.dao.impl;

import www.gxw.com.sqlit.dao.BaseDao;

import www.gxw.com.sqlit.dataBase.DataBaseHelper;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

public class BaseDaoImpl implements BaseDao{

// 依赖DataBaseHelper的对象

private DataBaseHelper dataBaseHelper;

public BaseDaoImpl(DataBaseHelper dataBaseHelper) {

// TODO Auto-generated constructor stub

this.dataBaseHelper = dataBaseHelper;

}

@Override

public long insert(String table, String nullColumnHack, ContentValues values) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

long insert = db.insert(table, nullColumnHack, values);

db.close();

return insert;

}

@Override

public Cursor query(String table, String columns[], String selection,

String[] selectionArgs, String groupBy, String having,

String orderBy) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

return db.query(table, columns, selection, selectionArgs, groupBy,

having, orderBy);

}

@Override

public Cursor query(String table, String columns[], String selection,

String[] selectionArgs, String groupBy, String having,

String orderBy, String limit) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

return db.query(table, columns, selection, selectionArgs, groupBy,

having, orderBy, limit);

}

@Override

public int update(String table, ContentValues values, String whereClause,

String whereArgs[]) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

int i = db.update(table, values, whereClause, whereArgs);

db.close();

return i;

}

@Override

public int delete(String table, String whereClause, String[] whereArgs) {

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

int i = db.delete(table, whereClause, whereArgs);

db.close();

return i;

}

}

package www.gxw.com.other2;

import android.app.Activity;

import android.content.ContentResolver;

import android.database.ContentObserver;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v4.widget.SimpleCursorAdapter;

import android.view.View;

import android.widget.AbsListView;

import android.widget.AbsListView.OnScrollListener;

import android.widget.CursorAdapter;

import android.widget.ListView;

import android.widget.TextView;

public class MainActivity extends Activity implements OnScrollListener {

private boolean flag = false;

private boolean isLastRow = false;

private ListView lv_users;

private TextView tv_tip;

private SimpleCursorAdapter adapter;

private ContentResolver contentResolver;

private static final String URL = "content://www.gxw.com.sqlit.provider.usercontentproivder/users";

private static final int INSERT = 1;

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

switch (msg.what) {

case INSERT:

tv_tip.setVisibility(View.VISIBLE);

flag = true;

tv_tip.setText("有新信息");

break;

default:

break;

}

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv_tip = (TextView) findViewById(R.id.tv_tip);

tv_tip.setVisibility(View.GONE);// 不占用位置,彻底隐藏

lv_users = (ListView) findViewById(R.id.lv_users);

// 获取解析内容

contentResolver = getContentResolver();

initData();

lv_users.setOnScrollListener(this);

// 注册监听器Observer

/**

* 如果为true 模糊匹配

*/

getContentResolver().registerContentObserver(Uri.parse(URL), true,

new UserContentObserver(handler));

}

private void initData() {

Cursor c = contentResolver.query(Uri.parse(URL), new String[] {

"userid as _id", "username", "userphone" }, null, null,

"userid desc");

// 控制层

adapter = new SimpleCursorAdapter(this, R.layout.list_item_user, c,

new String[] { "username", "userphone" }, new int[] {

R.id.tv_name, R.id.tv_phone },

CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

lv_users.setAdapter(adapter);

}

//

class UserContentObserver extends ContentObserver {

private Handler handler;

public UserContentObserver(Handler handler) {

super(handler);

// TODO Auto-generated constructor stub

this.handler = handler;

}

@Override

public void onChange(boolean selfChange) {

// TODO Auto-generated method stub

super.onChange(selfChange);

System.out.println("有新信息插入");

/*

* System.out.println("iiiiiiii"); Toast.makeText(MainActivity.this,

* "fasdf", Toast.LENGTH_LONG) .show();

*/

handler.sendEmptyMessage(INSERT);

tv_tip.setText("有新信息");

}

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

// TODO Auto-generated method stub

/* Toast.makeText(this, "========" + scrollState, Toast.LENGTH_LONG)

.show();*/

// 有新消息 更新的时候去加载数据

if (flag && scrollState == OnScrollListener.SCROLL_STATE_FLING) {

initData();

flag = false;

tv_tip.setVisibility(View.GONE);

}

if (isLastRow && scrollState == OnScrollListener.SCROLL_STATE_FLING) {

// 去加载数据

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// TODO Auto-generated method stub

/* Toast.makeText(

this,

firstVisibleItem + "========" + visibleItemCount + "========="

+ totalItemCount, Toast.LENGTH_LONG).show();*/

if ((firstVisibleItem + visibleItemCount) >= totalItemCount

&& totalItemCount > 0) {

// 发送请求处理

isLastRow = true;

}

}

}

赞助本站

人工智能实验室

相关热词: android开发 android教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港