ContentProvider的实现过程
1、定义一个CONTENT_URI常量,提供了访问ContentProvider的标识符。
1
|
public
static
final
Uri CONTENT_URI = Uri.parse(
"content://com.example.codelab.transportationprovider"
);
|
2、在AndroidManifest.xml当中进行声明。
1
2
3
4
|
<!-- android:name是完成ContentProvider类的全称
android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错
-->
<provider android:name=
"com.bj.FirstContentProvider"
android:authorities=
"com.bj.firstcontentprovider"
></provider>
|
示例:
1
2
3
4
| /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
SQLite操作类DBOpenHelper
package
com.zking.db;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
import
android.util.Log;
/**
* Created by Administrator on 2016/12/14.
*/
public class
DbHelper
extends
SQLiteOpenHelper {
/**
*
@param
context
上下文
*
@param
name
数据库名字(文件名)
*
@param
factory
数据库工厂(null)
*
@param
version
数据库版本
*/
public
DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int
version) {
super
(context, name, factory, version);
Log.
i
(
"test"
,
"构造方法"
); }
/**
* 创建表的操作
*
@param
sqLiteDatabase
*/
@Override
public void
onCreate(SQLiteDatabase sqLiteDatabase) { Log.
i
(
"test"
,
"onCreate"
);
//创建表
sqLiteDatabase.execSQL(
"create table person(_id integer primary key autoincrement,name,age)"
); }
//数据库版本:低---->高
@Override
public void
onUpgrade(SQLiteDatabase sqLiteDatabase,
int
i,
int
i1) { Log.
i
(
"test"
,
"onUpgrade"
); }}
|
|
package
com.zking.db;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
import
android.util.Log;
/**
* Created by Administrator on 2016/12/14.
*/
public class
DbHelper
extends
SQLiteOpenHelper {
/**
*
@param
context
上下文
*
@param
name
数据库名字(文件名)
*
@param
factory
数据库工厂(null)
*
@param
version
数据库版本
*/
public
DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
int
version) {
super
(context, name, factory, version); Log.
i
(
"test"
,
"构造方法"
); }
/**
* 创建表的操作
*
@param
sqLiteDatabase
*/
@Override
public void
onCreate(SQLiteDatabase sqLiteDatabase) { Log.
i
(
"test"
,
"onCreate"
);
//创建表
sqLiteDatabase.execSQL(
"create table person(_id integer primary key autoincrement,name,age)"
); }
//数据库版本:低---->高
@Override
public void
onUpgrade(SQLiteDatabase sqLiteDatabase,
int
i,
int
i1) { Log.
i
(
"test"
,
"onUpgrade"
); }}
内容提供者
1
2
3
4
| packagecom.zking.db;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;/** * Created by Administrator on 2016/12/14. */public class DbHelperextendsSQLiteOpenHelper {/** *@paramcontext上下文 *@paramname数据库名字(文件名) *@paramfactory数据库工厂(null) *@paramversion数据库版本 */publicDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,intversion) {super(context, name, factory, version); Log.i("test","构造方法"); } /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}
示例:
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
package com.zking.provide; 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; import android.support.annotation.Nullable; import android.util.Log; import com.zking.db.DbHelper; /** * Created by Administrator on 2017/2/6. */ public class provide_person extends ContentProvider{ private SQLiteDatabase db; private UriMatcher uriMatcher; @Override public boolean onCreate() { Log.i("test","PersonProvider,onCreate"); DbHelper dbHelper=new DbHelper(getContext(),"question.db",null,1); db = dbHelper.getReadableDatabase(); //URI匹配器 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //给URI匹配器中添加匹配规则 uriMatcher.addURI("com.zking.g150725_android16_sqlite.PERSON","person",0); uriMatcher.addURI("com.zking.g150725_android16_sqlite.PERSON","person/#",1); return false; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { Log.i("test","query"); //开始匹配 Cursor cursor=null; cursor=db.query(false,"person",strings,s,strings1,null,null,s1,null); return cursor; } @Nullable @Override public String getType(Uri uri) { Log.i("test","getType"); return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) { Log.i("test","insert"); db.insert("person",null,contentValues); return null; } @Override public int delete(Uri uri, String s, String[] strings) { db.delete("person",s,strings); return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { db.update("person",contentValues,s,strings); return 0; } } |
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
activity_main.xml
/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}
示例:
1
2
3
4
| /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
1
2
3
4
|
<!-- android:name是完成ContentProvider类的全称
android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错
-->
<provider android:name=
"com.bj.FirstContentProvider"
android:authorities=
"com.bj.firstcontentprovider"
></provider>
|
/** * 创建表的操作 * @param sqLiteDatabase */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log. i ( "test" , "onCreate" ); //创建表 sqLiteDatabase.execSQL( "create table person(_id integer primary key autoincrement,name,age)" ); } //数据库版本:低---->高 @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { Log. i ( "test" , "onUpgrade" ); }}
示例:
1
2
3
4
| /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
activity_main.xml
1
2
3
4
|
|
/** * 创建表的操作 * @param sqLiteDatabase */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log. i ( "test" , "onCreate" ); //创建表 sqLiteDatabase.execSQL( "create table person(_id integer primary key autoincrement,name,age)" ); } //数据库版本:低---->高 @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { Log. i ( "test" , "onUpgrade" ); }}
示例:
1
2
3
4
| /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="zking.com.g150825_andriod24.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_query1"
android:hint="请输入内容"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询"
android:id="@+id/edit_query2"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名"
android:id="@+id/addname"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入年龄"
android:id="@+id/addage"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="增加"
android:id="@+id/ad"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入要修ID"
android:id="@+id/updateid"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名"
android:id="@+id/updatename"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入年龄"
android:id="@+id/updateage"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改"
android:id="@+id/update"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入要删除的ID"
android:id="@+id/deleteid"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除"
android:id="@+id/delete"
/>
</LinearLayout>
示例:
1
2
3
4
| /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.zking.db.DbHelper;
public class MainActivity extends ListActivity {
private EditText et_main_id;
private EditText et_main_name;
private EditText et_main_age;
private SQLiteDatabase db;
private SimpleCursorAdapter simpleCursorAdapter;
private Cursor cursor;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化DbHelper
DbHelper dbHelper=new DbHelper(this,"person.db",null,2);
//获取SQLiteDataBase对象(类似Hibernate中Session)
db = dbHelper.getReadableDatabase();
//获取ListView
listview = getListView();
initViews();
//查询所有
cursor = db.query(false,"person",null,null,null,null,null,null,null);
//循环游标
//把值放入list
//设置适配器
//SimpleCursorAdapter
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age});
listview.setAdapter(simpleCursorAdapter);
initEvents();//初始化事件
}
private void initEvents() {
//给ListView添加长按事件
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点击的每一行的值
LinearLayout root= (LinearLayout) view;
String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString();
String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString();
String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString();
//弹出对话框(自定义)
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
final AlertDialog dialog=builder.create();
//设置点击空白,不取消对话框
dialog.setCancelable(false);
//解析布局文件
View v=getLayoutInflater().inflate(R.layout.dialog_listview,null);
((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id);
((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name);
((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age);
((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show();
dialog.dismiss();//关闭当前的对话框
}
});
((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();//关闭当前的对话框
}
});
dialog.setView(v);
dialog.show();
return true;
}
});
}
private void initViews() {
et_main_id = (EditText) findViewById(R.id.et_main_id);
et_main_name = (EditText) findViewById(R.id.et_main_name);
et_main_age = (EditText) findViewById(R.id.et_main_age);
}
public void save(View view){
String name=et_main_name.getText().toString();
int age=Integer.parseInt(et_main_age.getText().toString());
//保存到数据库中
ContentValues values=new ContentValues();//Map
values.put("name",name);
values.put("age",age);
values.putNull("_id");
db.insert("person","name",values);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
cursor=queryAllPerson(null);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
public Cursor queryAllPerson(String name){
//Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null);
Cursor cursor;
if(!"".equals(name)){
Log.i("test","name="+name);
cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""});
}else{
Log.i("test","查询所有");
cursor = db.rawQuery("select * from person",null);
}
return cursor;
}
public void query(View view){
// if(!TextUtils.isEmpty(et_main_name.getText())){
String name=et_main_name.getText().toString();
cursor=queryAllPerson(name);
//通知适配器发生改变
simpleCursorAdapter.changeCursor(cursor);
}
}