Contentprovider修改表两个Demo
来源:互联网 发布:gentoo linux 论坛 编辑:程序博客网 时间:2024/06/03 20:16
//清单文件中的注册
<!--组成内容提供者-->
<provider
android:authorities="bw.com.bw_day22.bw"
android:name=".MyContentProvider"
android:exported="true"
/>
</application>
public class MyContentProvider extends ContentProvider {
private DbOpenHelper openHelper;
//定义URI匹配器
private static final String AUTHORITY = "bw.com.bw_day22.bw"; //包名 + 数据库名
private static UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
//user -- content://bw.com.bw_day22.bw/user
uriMatcher.addURI(AUTHORITY,"user",2);
}
@Override
public boolean onCreate() {
openHelper = new DbOpenHelper(getContext());
return false;
}
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
if (uriMatcher.match(uri) == 2)
{
SQLiteDatabase db = openHelper.getReadableDatabase();
return db.query("user",projection,selection,selectionArgs,null,null,sortOrder);
}
return null;
}
@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
//content://bw.com.bw_day22.bw/user
if (uriMatcher.match(uri)==2)
{
SQLiteDatabase db = openHelper.getWritableDatabase();
//返回的是当前添加最新数据的id
long id = db.insert("user",null,values);
//生产新的URI
Uri newUri = ContentUris.withAppendedId(uri,id);
//content://bw.com.bw_day22.bw/user/13
}
return null;
}
@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
if (uriMatcher.match(uri) == 2)
{
SQLiteDatabase db = openHelper.getWritableDatabase();
//代表当前的操作影响了多少条记录
int count = db.delete("user",selection,selectionArgs);
}
return 0;
}
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
if (uriMatcher.match(uri) == 2)
{
SQLiteDatabase db = openHelper.getWritableDatabase();
//代表当前的操作影响了多少条记录
int count =db.update("user",values,selection,selectionArgs);
}
return 0;
}
@Nullable
@Override
public String getType(@NonNull Uri uri) {
return null;
}
}
//创建库
public class DbOpenHelper extends SQLiteOpenHelper {
public DbOpenHelper(Context context) {
//初始化表
super(context, "bw", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//初始表
db.execSQL("create table user(_id integer primary key autoincrement,uName,uPhone)");
db.execSQL("insert into user(uName,uPhone) values('乔博','15888888888')");
db.execSQL("insert into user(uName,uPhone) values('小马','15666666666')");
db.execSQL("insert into user(uName,uPhone) values('小郭','15222222222')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//以下是另一个Mode中的内容
public class MainActivity extends AppCompatActivity {
private ListView mLv;
private Cursor cursor;//数据源
private SimpleCursorAdapter adapter;//适配器
private ContentResolver resolver;
private Uri uri = Uri.parse("content://bw.com.bw_day22.bw/user");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLv = (ListView) findViewById(R.id.lv_id);
//声明解析器
resolver = getContentResolver();
}
@Override
protected void onResume() {
super.onResume();
cursor = resolver.query(uri,null,null,null,null);
adapter = new SimpleCursorAdapter(this,
R.layout.item_lv,
cursor,
new String[]{"uName","uPhone"},
new int[]{R.id.name_tv,R.id.phone_tv},
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
mLv.setAdapter(adapter);
mLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
//弹出对话框
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("请选择");
String[] items = {"编辑联系人","删除联系人"};
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which)
{
case 0:
//编辑联系人
//获取当前条目的内容
if(cursor.moveToPosition(position))
{
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("uName"));
String phone = cursor.getString(cursor.getColumnIndex("uPhone"));
//携带参数
Intent intent = new Intent(MainActivity.this,EditActivity.class);
intent.putExtra("id",id);
intent.putExtra("name",name);
intent.putExtra("phone",phone);
startActivity(intent);
}
break;
case 1:
//删除联系人
if (cursor.moveToPosition(position))
{
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setIcon(R.mipmap.ic_launcher);
builder1.setTitle("提示");
builder1.setMessage("是否确认删除?");
builder1.setNegativeButton("取消",null);
builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int id = cursor.getInt(cursor.getColumnIndex("_id"));
resolver.delete(uri,"_id=?",new String[]{id+""});
cursor.requery();//再次执行查询的方法
}
});
builder1.show();
}
break;
}
}
});
builder.show();
}
});
}
//创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.action_add:
Intent intent = new Intent(this,EditActivity.class);
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
}
///另一个类
public class EditActivity extends AppCompatActivity {
private EditText nameEt;
private EditText phoneEt;
private ContentResolver resolver;
private Uri uri = Uri.parse("content://bw.com.bw_day22.bw/user");
private int id = -1;
private String uName,uPhone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
nameEt = (EditText) findViewById(R.id.name_et);
phoneEt = (EditText) findViewById(R.id.phone_et);
resolver = getContentResolver();
//编辑功能
//获取传入的参数
Intent intent = getIntent();
id = intent.getIntExtra("id",-1);
uName = intent.getStringExtra("name");
uPhone = intent.getStringExtra("phone");
nameEt.setText(uName);
phoneEt.setText(uPhone);
}
public void submit(View view)
{
//获取输入框的内容
String name = nameEt.getText().toString().trim();
String phone = phoneEt.getText().toString().trim();
//添加数据
ContentValues values = new ContentValues();
values.put("uName",name);
values.put("uPhone",phone);
if (id!=-1)
{
//修改
resolver.update(uri,values,"_id=?",new String[]{id+""});
}
else{
//添加
resolver.insert(uri,values);
}
finish();
}
}
- Contentprovider修改表两个Demo
- Android Custom ContentProvider Demo
- ContentProvider测试 Demo
- ContentProvider使用Demo
- 一个ContentProvider的Demo
- Demo:ContentProvider 内容提供者
- Android 自定义ContentProvider Demo
- Android--ContentProvider小demo
- ContentProvider总结与简单Demo
- *【数据修改】contentprovider
- Android四组件之ContentProvider架构&Demo
- Android ContentProvider 完全解析及简单DEMO
- Android ContentProvider 完全解析及简单DEMO
- Android ContentProvider+获取系统联系人小Demo
- Android ContentProvider 完全解析及简单DEMO
- android ContentProvider访问SQLite数据库Demo
- 多线程两个小demo
- SparkStreaming两个小Demo
- Centos下PPTP环境部署记录
- 一次简单的存储过程以及定时任务设置
- 字典序
- 面向对象的 七种设计原则 (整理)
- Vue.JS
- Contentprovider修改表两个Demo
- nodejs中函数共享作用域导致的内存泄漏
- Vue.js-----轻量高效的MVVM框架(使用slot分发内容)
- 安卓 使用字体包 自定义字体
- 欢迎使用CSDN-markdown编辑器
- 1234-4321认识android知识体系
- jquery的height()和javascript的height总结,js获取屏幕高度
- linux命令行快捷键
- final、fianlly、finalize的区别?