首页 > 系统 > Android > 正文

android四大组件之ContentProvider

2019-11-09 18:21:14
字体:
来源:转载
供稿:网友

ContentPRovider的实现过程

1、定义一个CONTENT_URI常量,提供了访问ContentProvider的标识符。 

?
1publicstatic final Uri CONTENT_URI = Uri.parse("content://com.example.codelab.transportationprovider");

2、在AndroidManifest.xml当中进行声明。

?
1234<!-- android:name是完成ContentProvider类的全称             android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错         -->        <provider android:name="com.bj.FirstContentProvider"android:authorities="com.bj.firstcontentprovider"></provider>
  示例:
1234/** * 创建表的操作 *@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
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 classDbHelperextendsSQLiteOpenHelper {/** * @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"); }}
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"); }}内容提供者
1234packagecom.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"); }}示例:
1234/** * 创建表的操作 *@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);    }}packagecom.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"); }}示例:
1234/** * 创建表的操作 *@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);    }}
1234<!-- android:name是完成ContentProvider类的全称             android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错         -->        <provider android:name="com.bj.FirstContentProvider"android:authorities="com.bj.firstcontentprovider"></provider>
  /** * 创建表的操作 *@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"); }}示例:
1234/** * 创建表的操作 *@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

?
1234
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"); }}示例:
1234/** * 创建表的操作 *@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>示例:
1234/** * 创建表的操作 *@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);    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表